【发布时间】:2010-11-23 09:03:23
【问题描述】:
需要一些帮助来解决这个问题。
我有一个 gridview 并且在 gridview 内我有一个复选框,单击该复选框后,我正在执行回发事件并尝试仅在数据库上更新此特定行。
这是我的 gridview 复选框代码。查看 OnCheckedChanged。
<asp:TemplateField HeaderText="Sample">
<ItemTemplate>
<asp:CheckBox runat="server"
ID="chkSample"
Checked='<%# Bind("Sample") %>'
OnCheckedChanged="UpdateSupplyLed"
AutoPostBack="True">
</asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
代码:
protected void UpdateSupplyLed(object sender, EventArgs e)
{
foreach (GridViewRow di in SamplingGridView.Rows)
{
CheckBox chkBx = (CheckBox)di.FindControl("chkSample");
if (chkBx != null && chkBx.Checked)
{
//update database logic here.
}
}
}
上面的代码工作正常,但它让我得到了所有被选中的复选框,而与我刚刚选中的复选框无关。我不想要所有这些。
如何获取刚刚检查的唯一一行值。有些行可能已经检查过了,因为这些记录的状态为真,我不想更新这些记录。
我想我的问题是对的!
更新:答案是:
protected void UpdateSupplyLed(object sender, EventArgs e)
{
CheckBox chkSampleStatus = sender as CheckBox;
bool sample = chkSampleStatus.Checked;
GridViewRow row = chkSampleStatus.NamingContainer as GridViewRow;
TextBox txtId = row.FindControl("Id") as TextBox;
int id = Int32.Parse(txtId.Text);
}
【问题讨论】:
标签: asp.net .net gridview checkbox