Mcbaloo Ответов: 2

Как получить обновление базы данных при нажатии на поле кнопки для определенной строки


У меня есть gridview в моем веб-приложении. Gridview заполнен записями из моей БД. У меня есть поле кнопки в каждой строке, содержащей записи. я хочу обновлять записи в своей БД всякий раз, когда нажимается кнопка в griview. например, если у меня есть что-то вроде этого
SN имя адрес телефон действие выхода из системы
1 Майк Азбука 0984 "выход" (это кнопки). Когда нажата кнопка "выйти", я хочу обновить эту же строку в своей базе данных. мне нужно иметь возможность получить значение (1), чтобы я мог обновить поле signOut в своей БД

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

Вот мой gridview

<pre lang="ASP.NET"><asp:GridView ID="GridView1" runat="server" AllowPaging="True" Height="326px" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="5" style="text-align: left; margin-left: 169px" Width="1069px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnRowEditing="GridView1_RowEditing">

                     <Columns>
                         <asp:BoundField HeaderText="S/N" DataField="SN" />
                         <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                         <asp:BoundField HeaderText="Address" DataField="Address" />
                         <asp:BoundField HeaderText="Phone Number" DataField="PhoneNumber" />
                         <asp:BoundField HeaderText="Sex" DataField="Sex" />
                         <asp:BoundField HeaderText="Reason" DataField="Reason" />
                         <asp:BoundField HeaderText="SignIn" DataField="SignIn_Time" />
                         <asp:BoundField HeaderText="SignOut" DataField="Signout_Time" />

                         <asp:TemplateField HeaderText="Action" Visible="True">
                             <ItemTemplate>
                                 <asp:Button ID="out" runat="server" Text="Sign out" CommandName="SignOut"/>
                             </ItemTemplate>
                         </asp:TemplateField>
                     </Columns>

             <PagerSettings FirstPageText="First" LastPageText="Last" Mode="NumericFirstLast" PageButtonCount="5" />


         </asp:GridView>

мой код позади
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
       {
          if (e.CommandName == "SignOut")
           {
              int index = Convert.ToInt32(e.CommandArgument);
              GridViewRow Grid = GridView1.Rows[index];


}

2 Ответов

Рейтинг:
2

Vincent Maverick Durano

В то время как вы могли бы сделать это в RowCommand, вы также можете сделать это в Click обработчик событий кнопки выглядит следующим образом:

protected void out_Click(object sender, EventArgs e)
{
        Button b = (Button)sender;
        GridViewRow row = (GridViewRow)b.NamingContainer;
        if (row != null)
        {
            int index = row.RowIndex; //gets the row index selected
            int ID = Convert.ToInt32(row.Cells[0].Text); 

            //your update code here
        }

       //Make sure to rebind your grid here with the data from the datasource to reflect the changes
} 


Затем убедитесь, что вы подключили обработчик событий для вашего устройства. Button чтобы вызвать событие:

<asp:button id="out" runat="server" text="Sign out" onclick="out_Click">
</asp:button>


Рейтинг:
0

koklimabc

Не используйте commandName (удалите его), если вы хотите определить свой собственный, например, установите "DataKeyNames" для полей " SN " и " Sex " (зависит от того, какое значение поля вы хотите взять),

<asp:GridView ID="GridView1" runat="server" DataKeyNames="SN,Sex" AllowPaging="True" Height="326px" OnPageIndexChanging="GridView1_PageIndexChanging" >
 <asp:TemplateField>
      <ItemTemplate>
      <asp:Button ID="TestClick" Text="Test" runat="server" OnClick="Unnamed_Click"  />
     </ItemTemplate>
</asp:TemplateField>
</asp:GridView>


с фоновым кодом:
охраняемых недействительными Unnamed_Click(объект отправителя, EventArgs в электронной)
{
пробовать
{
Кнопка TestClick = отправитель как кнопка;
Gridviewrow rowlist = TestClick.NamingContainer как GridViewRow;
var rowindex = список строк.Параметр rowindex;
var SNField = this.GridView1.DataKeys[rowindex]["SN"].Метод toString();
var SexField = this.GridView1. DataKeys[rowindex]
["Секс"].Метод toString();
}
поймать (исключение бывший)
{

}
}