需要一些帮助来解决这个问题。asp.net gridview复选框选择
我有一个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.
}
}
}
上面的代码工作正常,但它让我所有的检查,我刚才查了一个irresepective的复选框。我不想要所有的人。
我怎样才能得到刚刚检查过的唯一一行值。某些行可能已经被检查过,因为这些记录的状态为真,我不想更新这些记录。
我想我的问题是对的!
更新:答案是:
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);
}
谢谢您的回答。但我需要来自同一行的其他值,所以如何获取特定gridview行的行ID。这样我可以得到记录的Id。 – Supremestar 2009-08-27 13:08:59
然后,我建议不绑定复选框的OnCheckChanged,而是使用GridViews OnRowCommand,而GridVieweCommandEventArgs提供的行HollyStyles – 2009-08-27 13:18:36
, 我没有GridView中的select命令字段,所以Gridview的行命令没有触发。我应该怎样做我的朋友? 请帮忙。 – Supremestar 2009-08-27 13:37:10