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.
}
}
}
上面的代码工作正常,但它给我的所有复选框都被检查,而不管我刚检查的那个.我不想要所有这些. 如何才能获得刚刚检查过的唯一一行值.某些行可能已经被检查过,因为这些记录的状态为true,我不想更新这些记录. 我想我的问题是对的! 更新:答案是: 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);
}
解决方法试试这个:CheckBox chkBx = sender as CheckBox; 而不是迭代所有行. 我自己没有以这种方式在GridView中使用CheckBox.通常我会使用GridView的OnRowCommand事件,并使用RowIndex或CommandArgument值来更新数据库. 考虑一下OnRowcommand对于CheckBox来说可能很棘手,一个更好的解决方案可能是坚持使用复选框的CheckChanged事件并使用控件NamingContainer导航到GridViewRow服务器端.就像是: GridViewRow row = chkBx.NamingContainer as GridViewRow; 我假设去了CheckBox => Cell =>如果您使用Google ASP.NET NamingContainer,您将获得更多细节. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 适用于asp.net MVC和razor视图的免费UI模板
- ASP.NET TextBox LostFocus事件
- ASP.NET MVC:使用LINQ To SQL获取表单复选框到多对数DB as
- asp.net – 全局ASAX中的错误:文件不存在
- asp.net-mvc – User.Identity.Name在ASP.Net MVC中为空
- asp.net – 如何在Visual Studio 2008调试器中查看会话变量
- asp.net-mvc-3 – 验证隐藏的字段
- Asp.NET DropDownList在PostBack之后重置SelectedIndex
- asp.net-mvc – asp.net mvc 3预选Html.DropDownListFor不能
- asp-classic – 你用什么来编辑和开发经典ASP
