Search code examples
c#webformsasp.net-controls

How do I disable all controls in ASP.NET page?


I have multiple dropdownlist in a page and would like to disable all if user selects a checkbox which reads disable all. So far I have this code and it is not working. Any suggestions?

foreach (Control c in this.Page.Controls)
{
    if (c is DropDownList)
        ((DropDownList)(c)).Enabled = false;
}

Solution

  • Each control has child controls, so you'd need to use recursion to reach them all:

    protected void DisableControls(Control parent, bool State) {
        foreach(Control c in parent.Controls) {
            if (c is DropDownList) {
                ((DropDownList)(c)).Enabled = State;
            }
    
            DisableControls(c, State);
        }
    }
    

    Then call it like so:

    protected void Event_Name(...) {
        DisableControls(Page,false); // use whatever top-most control has all the dropdowns or just the page control
    } // divs, tables etc. can be called through adding runat="server" property