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

时间:2015-08-13 06:02:10

标签: c# webforms findcontrol

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

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());

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以尝试以下代码:

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

    }
}

这里Panel1包含所有复选框..谢谢。

答案 2 :(得分:1)

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

感觉像是一个quickfix,但它确实有用。