我在页面加载事件中动态地在gridview中添加了复选框。我想在数据库中保存未选中的复选框值,但我没有动态添加复选框控件的值,它总是返回空值。
代码示例:
CheckBox chkQtyval1 = (CheckBox)gv.Rows[index].Cells[i].FindControl("chkCheckBox");
它返回一个空值。
后面的代码:
提前致谢
每个动态添加的复选框都有一个自动分配的 ID。
因此,假设您在添加复选框时处于 for 循环中......当您创建复选框时,您添加一个 .ClientID = x;
然后当你想得到控制使用
CheckBox chkbox = (CheckBox)Use Gridview.Findcontrol(x);
if(chkbox!=null)
{
//Do Something
}
其中,“x”是创建复选框 ID 时分配给它的值。
注意:查找控件可能是不稳定的,所以我们使用一个通过循环遍历整个控件树(或只是它的一部分)直到找到匹配项来工作的控件。
public Static Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
控件根可以是 Page、Master 或 Control(比如 GridView)
第二个注意事项:这被标记为静态,因此您将其用作 Class.FindControlRecursive() 或完全删除静态引用以仅在单个页面中使用它