0

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

代码示例:

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

它返回一个空值。

后面的代码:

提前致谢

4

1 回答 1

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(比如 GridView)

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

于 2013-09-13T11:55:40.543 回答