检查/取消选中复选框时运行事件Gridview C#

时间:2017-02-13 13:32:05

标签: c# asp.net gridview checkbox

我有一个有4列的Gridview。全部在ItemTemplate一列是一个CheckBox。此Gridview绑定到数据源。我想要做的是当选中复选框时,用位值' 1'更新数据库。如果我取消选中复选框以执行相同操作,但是' 0'。

我已经知道我的SQL代码来更新数据库,但我不知道如何运行该事件,以便它在gridview中查看复选框所在的当前行。

这是CheckBox列。

<asp:TemplateField  HeaderText="Pick" ItemStyle-CssClass="hrGrid" HeaderStyle-CssClass="hdrHrBase">
<ItemTemplate>
<asp:CheckBox id="cbViewCustomer" runat="server" OnCheckedChanged="ViewCustomer" onAutoPostBack="true" Checked='<%#(Eval("chosen"))%>'/>        
</ItemTemplate>
</asp:TemplateField>

我是否像这样使用EventArgs: 这个问题是它更新了数据库但是更新了所有行。 我要做的是仅更新Gridview中的当前行。我不知道从哪里开始。

protected void ViewCustomer(object sender, EventArgs e)
    {
        string SelectCustomer = "UPDATE tblcustomer Set chosen ='0'";
        NpgsqlCommand changedata = new NpgsqlCommand(SelectCustomer, con);
        con.Open();
        changedata.ExecuteNonQuery();
        con.Close();

    }

或者我应该做些不同的事情?

1 个答案:

答案 0 :(得分:1)

您可以使用grid CommandName事件执行此操作,如下所示: -

将RowCommand事件与gridview关联: -

CommandArgument

接下来,关联<asp:TemplateField HeaderText="Pick" ItemStyle-CssClass="hrGrid" > <ItemTemplate> <asp:CheckBox id="cbViewCustomer" runat="server" Checked='<%#(Eval("chosen"))%>' CommandName="myCheckbox" CommandArgument="<%# Container.DataItemIndex %>"/> </ItemTemplate> </asp:TemplateField> &amp; protected mygridview_OnRowCommand (object sender, GridViewCommandEventArgs e) { if(e.CommandName == "myCheckbox") { int rowIndex = Convert.ToInt32(e.CommandArgument); GridViewRow row = mygridview.Rows[rowIndex]; bool ischecked = (row.FindControl("cbViewCustomer") as CheckBox).Checked; } } 到您的复选框: -

npm install -g express-generator@4

在处理事件后面的代码中: -

express-generator@4

您也可以使用checbox checked事件来执行此操作,但如果您有多个控件,则触发gridview命令事件而不是单个事件。