【发布时间】:2017-02-13 13:32:05
【问题描述】:
我有一个有 4 列的 Gridview。全部在ItemTemplate 一列是一个复选框。此 Gridview 绑定到数据源。我想要做的是当复选框被选中时使用位值“1”更新数据库,如果我取消选中复选框以执行相同的操作但为“0”。
我已经知道用于更新数据库的 SQL 代码,但我不确定如何运行该事件,以便它查看网格视图中复选框所在的当前行。
这里是复选框列。
<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();
}
或者我应该做一些不同的事情吗?
【问题讨论】:
-
你试过了吗?这是一个有效的解决方案。尽管您应该考虑是否要立即执行此操作...通常用户认为他们可以将内容编辑为草稿并且仅在单击保存按钮时才保存,但请确保不是这种情况并且用户理解选中该框将立即更新对象我发现这会让人们感到压力
-
因为它是用相同的值更新整个列。我只是更新当前行的内容。
-
什么?您需要发布执行更新的其他代码...您当然可以使用这样的事件处理程序来做您需要的事情
标签: c# asp.net gridview checkbox