2010-06-24 73 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

,最好的辦法是把你的自定義事件從您的內容頁面,然後在母版頁中處理它。通過這種方式,您的主頁面與您的內容頁面無關。

相關問題