0

我的codebehind.cs 文件(.NET.Framework 4.0)上有这个方法:

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (CheckBox1.Checked == true)
        {

            this.nombre.Enabled = false;

        } 
    }

因此,nombre每次单击复选框时,我都可以在我的 aspx 中禁用该 TextBox。

这是aspx文件中的代码:

        <asp:CheckBox ID="CheckBox1" Checked="false" runat="server" OnCheckedChanged="CheckBox1_CheckedChanged" AutoPostBack="true"/>     

现在,我想知道一种简化此例程的方法,我的意思是,我有很多文本框、单选按钮等...

那么如何使用loopasp.net 来实现这一点呢?

提前致谢!

4

2 回答 2

1

您可以尝试获取控件,然后检查它是否是文本框

foreach(Control cont in this.Controls)
{
   if(cont.GetType() == typeof(Textbox))
   {
      (cont as Textbox).Enabled = false;
   }
}
于 2013-10-15T04:34:50.187 回答
1

请尝试以下。

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (CheckBox1.Checked == true)
        {    
           DisableControlsInPage(this.Page,false);    
        } 
    }

    protected void DisableControlsInPage(Control parent, bool isEnable) {
        foreach(Control c in parent.Controls) {
            if (c is TextBox) {
                ((TextBox)(c)).Enabled = isEnable;
            }
            if (c is RadioButton) {
                ((RadioButton)(c)).Enabled = isEnable;
            }    
            DisableControlsInPage(c, isEnable);
        }
    }
于 2013-10-15T04:40:07.417 回答