无法在网络表单中找到复选框

Can't locate checkbox in webform

我想在我的网络表单上找到一个复选框,但找不到?它总是设置为 NULL?我尝试了不同的方法(i 是通过 FOR 循环设置的,我也在使用母版页):

CheckBox cb = (CheckBox)this.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());

CheckBox cb = (CheckBox)Page.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());

CheckBox cb = (CheckBox)Parent.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());

...以及...

CheckBox cb = (CheckBox)this.FindControl("sa" + i.ToString());

CheckBox cb = (CheckBox)Page.FindControl("sa" + i.ToString());

CheckBox cb = (CheckBox)Parent.FindControl("sa" + i.ToString());

有什么想法吗?

Findcontrol 使用 id,而不是客户端生成的 id(就像您的第一个代码块一样)。

在父对象上使用 Findcontrol(如果我是正确的,则并非总是必要)。如果复选框在页面主体上,请使用 Page.FindControl 或 this.FindControl。例如,当它在列表视图中时,请在适当的事件中使用它。

您可以试试这个代码:

foreach ( Control c in Panel1.Controls )
{
    CheckBox cb = c as CheckBox;
    if(cb!=null)
    {

    }
}

此处 Panel1 包含所有复选框..谢谢。

我将复选框放在面板中,并且能够按照@linuser Panel1.FindControl 访问它们。

感觉像是快速修复,但它确实有效。