2010-06-24 100 views
-4

以下代码对于禁用内容页面控件工作正常,但如何禁用母版页控件?如何在处理asp.net中的某些事件时禁用内容页面中使用的母版页控件

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

好的非常感谢你 – ush 2010-06-24 06:22:15

+0

你有尽力输入全部内容,但不能打扰回复的答案? – Pierreten 2010-06-24 06:24:44

+0

@Pierreten,这是不必要的。在你提出这些评论之前,给他机会来测试和回顾答案。 – GenericTypeTea 2010-06-24 06:27:41

回答

3

如果要禁用母版页的所有控件,只需做到以下几点:

DisableControls(this.Page.Master, isEnable); 

或者,如果你想在一个特定的母版contorl执行方法:

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

更新:

你为什么不强制牛逼把方法上的母版:

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

然后,要访问它,只是做从使用母版页的任何页面如下:

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

但这不能正常工作,请建议另一种解决方案 – ush 2010-06-24 06:37:23

+1

@ush - 只是说'不能正常工作'是没有用的。什么没有关于它的工作?什么是错误?你试过了什么代码? – GenericTypeTea 2010-06-24 06:40:36

+0

我必须禁用主页 的菜单控制,所以我用 //DisableControls(this.Page.Master.FindControl(“Menu1”),false); // – ush 2010-06-24 06:47:09

1

,最好的办法是把你的自定义事件从您的内容页面,然后在母版页中处理它。通过这种方式,您的主页面与您的内容页面无关。

相关问题