在gridview中查找动态添加的Checkbox

时间:2013-09-13 11:49:43

标签: c# asp.net

我在gridview中动态添加了复选框在页面加载event.i想要在数据库中保存未选中的复选框值,但我没有动态添加复选框控件的值,它总是返回空值。

代码示例:

CheckBox chkQtyval1 = (CheckBox)gv.Rows[index].Cells[i].FindControl("chkCheckBox");

它返回一个空值。

背后的代码:

提前致谢

1 个答案:

答案 0 :(得分:0)

每个动态添加的复选框都有一个自动分配的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(ike GridView)

第二个注意:这被标记为静态,因此您将其用作Class.FindControlRecursive() 或者完全删除静态引用以仅在单页中使用它