【问题标题】:Can't locate checkbox in webform无法在网络表单中找到复选框
【发布时间】:2015-08-13 06:02:10
【问题描述】:

我试图在我的网络表单上找到一个复选框,但找不到?它总是设置为NULL?我尝试了不同的方法(i 是通过 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());

有什么想法吗?

【问题讨论】:

  • 您能展示一下您是如何制作复选框的吗?

标签: c# webforms findcontrol


【解决方案1】:

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

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

【讨论】:

  • 进行了更改,但仍然出现相同的错误。很奇怪。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    你可以试试这个代码:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多