Faran Saleem Ответов: 1

Обновление gridview с помощью boundfield


Привет,

Я надеюсь, что вы все отлично справляетесь.
У меня есть вопрос относительно обновления GridView с помощью BoundField.
То, что я делаю в настоящее время, это то, что я добавил редактировать кнопка в GridView и как только я нажимаю на нее она дает мне редактируемые поля и обновление и отменять пуговица с ним.
Отменить и Редактировать кнопки работают нормально, но я хочу обновление и работать тоже.

Ниже приведен мой HTML-код:

<asp:GridView ID="gvSubmittedCases" runat="server" OnRowEditing="gvSubmittedCases_RowEditing" OnRowUpdating="gvSubmittedCases_RowUpdating"  
                    OnRowCancelingEdit="gvSubmittedCases_RowCancelingEdit"   CellPadding="4" GridLines="None" Width="100%" AutoGenerateColumns="False"  ForeColor="#333333" >  
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                        <Columns>
                            <asp:BoundField DataField="SubmittedDate" ReadOnly="true" HeaderText="SubmittedDate" ItemStyle-Width="100" SortExpression="SubmittedBy" >
                            </asp:BoundField>
                            <asp:BoundField DataField="SubmittedBy" Visible="true" ReadOnly="true" HeaderText="Submitted By" ItemStyle-Width="150" SortExpression="Transaction Amount" >
                            </asp:BoundField>
                            <%--<asp:BoundField DataField="Display_Name" Visible="true" HeaderText="Display Name" ItemStyle-Width="150" SortExpression="Display Name" >
                            </asp:BoundField>--%>
                            <asp:BoundField DataField="CardNo" HeaderText="Card Number" ItemStyle-Width="100" SortExpression="CardNo" >
                            </asp:BoundField>
                            <asp:BoundField DataField="CardType" ReadOnly="true" HeaderText="Card Type" ItemStyle-Width="100" SortExpression="CardType" >
                            </asp:BoundField>
                            <asp:BoundField DataField="FraudType" HeaderText="Fraud Type" ItemStyle-Width="150" SortExpression="FraudType" >
                            </asp:BoundField>
                            <asp:BoundField DataField="CaseID" Visible="true" ReadOnly="true" HeaderText="CaseID" ItemStyle-Width="150" SortExpression="CaseID" >
                            </asp:BoundField>
                            <asp:BoundField DataField="Region"  Visible="true" HeaderText="Region" ItemStyle-Width="150" SortExpression="Region" >
                            </asp:BoundField>
                            <asp:BoundField DataField="AuthorisationCode"  Visible="true" ReadOnly="true" HeaderText="Auth Code" ItemStyle-Width="150" SortExpression="Auth Code" >
                            </asp:BoundField>
                            <asp:BoundField DataField="TransactionDate" Visible="true" HeaderText="Transaction Date" ItemStyle-Width="150" SortExpression="TransactionDate" >
                            </asp:BoundField>
                            <asp:BoundField DataField="TransactionAmount" Visible="TRUE" HeaderText="Transaction Amount" ItemStyle-Width="150" SortExpression="Transaction Amount" >
                            </asp:BoundField>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="Edit" />
                                </ItemTemplate>
                                <EditItemTemplate>
                                    <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" />
                                    <asp:Button ID="btnCancel" runat="server" Text="Cancel" CommandName="Cancel" />
                                    </EditItemTemplate>
                                </asp:TemplateField>
                           
                            </Columns>



И это код позади.


private void CaseView()
  {
      BusinessLayer k = new BusinessLayer();
      DataTable dt = k.ViewCases(UserID,UserType);
      if (dt.Rows.Count >= 0)
      {
          gvSubmittedCases.DataSource = dt;
          gvSubmittedCases.DataBind();
      }
      else
          lblCases.Text = "No Cases Found";
  }

  protected void gvSubmittedCases_RowEditing(object sender, GridViewEditEventArgs e)
  {
      gvSubmittedCases.EditIndex = e.NewEditIndex;
      CaseView();
  }


protected void gvSubmittedCases_RowCancelingEdit(object sender,GridViewCancelEditEventArgs e)
   {
       gvSubmittedCases.EditIndex = -1;
       CaseView();

   }



Кроме того, есть одно поле FraudType что я хочу быть выпадающим списком, когда пользователь нажимает на кнопку Изменить.

Надеюсь, я прояснил свой вопрос.
Вы можете спросить, если что-нибудь понадобится, чтобы получить очищены.

Примечание:

Я использую хранимые процедуры для обновления базы данных, которая находится в SQL


Спасибо

Что я уже пробовал:

Я искал в интернете, но нет подходящего решения для BoundField + хранимых процедур

Suvabrata Roy

Пожалуйста, поделитесь кодом кнопки обновления

Faran Saleem

Я не написал никакого кода для кнопки обновления

Suvabrata Roy

Пожалуйста, пройдите по этой ссылке : http://www.c-sharpcorner.com/UploadFile/1e050f/edit-and-update-record-in-gridview-in-Asp-Net/

Faran Saleem

Я уже проверил это. Но он не использует BoundField. Не могли бы вы мне в этом помочь?

1 Ответов

Рейтинг:
10

Richard Deeming

То RowUpdating событие проходит в один GridViewUpdateEventArgs пример[^].

Он содержит три словаря, которые вы можете использовать для чтения значений:

  • Ключи[^] содержит ключевые значения для строки, как указано DataKeyNames свойство в сетке.
  • NewValues[^] содержит новые значения, переданные из строки.
  • OldValues[^] содержит исходные значения из строки на случай, если вам нужно проверить, какие поля изменились.

Итак, чтобы извлечь значения, которые могли бы измениться:
protected void gvSubmittedCases_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    string cardNo = Convert.ToString(e.NewValues["CardNo"]);
    string fraudType = Convert.ToString(e.NewValues["FraudType"]);
    string region = Convert.ToString(e.NewValues["Region"]);
    DateTime transactionDate = Convert.ToDateTime(e.NewValues["TransactionDate"]);
    decimal transactionAmount = Convert.ToDecimal(e.NewValues["TransactionAmount"]);
    ...
    
    gvSubmittedCases.EditIndex = -1;
    CaseView();
}

Вы захотите установить сетку DataKeyNames к имени первичного ключа и извлечь его из e.Keys словарь.

Затем вы должны иметь возможность вызвать свою хранимую процедуру для обновления записи.

Чтобы изменить столбец "тип мошенничества" на раскрывающийся список, вам нужно будет использовать TemplateField:
Пошаговое руководство: отображение раскрывающегося списка при редактировании в элементе управления веб-сервером GridView[^]


Faran Saleem

Спасибо. С небольшим добавлением код сработал.
Огромное спасибо за вашу помощь..:)