Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
679 views
in Technique[技术] by (71.8m points)

how to disable controls of master page used in content page while processing some event in asp.net

The following code works fine for disabling content page controls, but how do I disable master page controls?

public void DisableControls(Control control,bool isEnable)
{
    if (control.HasControls())
    {
        foreach (Control c in control.Controls)
        {
            DisableControls(c, isEnable);
        }
    }
    else
    {
        if (control is IPostBackDataHandler && !(control is IPostBackEventHandler))
        {
            if (control is WebControl)
            {
                ((WebControl)control).Enabled = isEnable;
            }
            else if (control is HtmlControl)
            {
                ((HtmlControl)control).Disabled = !isEnable;
            }
        }
    }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

If you want to disable all the controls on a Master Page, just do the following:

DisableControls(this.Page.Master, isEnable);

Or, if you want to perform the method on a specific MasterPage contorl:

DisableControls(this.Page.Master.FindControl("Panel1"), isEnable);

Update:

Why don't you just put a method on your MasterPage:

public void SetControlEnabledState(bool enabled)
{
   DisableControls(Menu1, enabled);
   DisableControls(Control2, enabled);
}

Then, to access it, just do the following from any page that uses the master page:

((MasterPageName)this.Page.Master).SetControlEnabledState(enabled);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...