как отключить элементы управления главной страницы, используемые на странице содержимого при обработке какого-либо события в asp.net - PullRequest
0 голосов
/ 24 июня 2010

Следующий код прекрасно работает для отключения элементов управления страницей содержимого, но как отключить элементы управления главной страницы?

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;
            }
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 24 июня 2010

Если вы хотите отключить все элементы управления на главной странице, просто сделайте следующее:

DisableControls(this.Page.Master, isEnable);

Или, если вы хотите выполнить метод для определенного элемента управления MasterPage:

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

Обновление:

Почему бы вам просто не поместить метод на вашу MasterPage:

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

Затем, чтобы получить к нему доступ, просто сделайте следующее на любой странице, которая использует главную страницу:

((MasterPageName)this.Page.Master).SetControlEnabledState(enabled);
1 голос
/ 24 июня 2010

Лучший способ - выбросить свое пользовательское событие со страницы содержимого и затем обработать его на главной странице.Таким образом, сделайте свою главную страницу независимой от своих страниц контента.

...