2010-04-22 56 views
0

內的用戶控制我有一個asp.net用戶控制,userControl1.ascx,而另一個用戶控制,userControl2.ascx。 userControl2位於userControl1內部。 userControl1位於UpdatePanel控件中。 userControl2中有一個按鈕,然後我想在推送時做一個正常的回發。我想使用ScriptManager.RegisterPostBackControl(按鈕)。我在母版頁上有一個ScriptManager。我不知道如何訪問的ScriptManager在userControl2在Page_Load事件註冊按鈕。那麼,我該怎麼做?的ScriptManager在一個用戶控件

回答

1

您可以通過使用遞歸FindControl方法找到該腳本經理。這不是最佳實踐,但它會完成工作。這不是一個很好的方法來做到這一點。

var scriptManager = FindControl(Page, "IdOfScriptManager"); 

public static Control FindControlRecursive(Control root, string id) 
    { 
     if (root.ID == id) 
     { 
      return root; 
     } 

     foreach (Control c in root.Controls) 
     { 
      Control t = FindControlRecursive(c, id); 
      if (t != null) 
      { 
       return t; 
      } 
     } 

     return null; 
    } 
+0

這工作。你能告訴我爲什麼常規的查找控制在這裏不起作用嗎? – user204588 2010-04-22 13:31:15

+0

使用ScriptManager可能不是頁面的直接孩子。它可能在其他控件內。由於母版頁和內容佔位符也被認爲是控件,所以在使用母版頁時通常是這種情況。 – ntziolis 2010-04-22 13:44:05

+1

難道ScriptManager.GetCurrent更好嗎? http://stackoverflow.com/questions/8601525/how-to-get-the-scriptmanager-placed-on-master-page-into-child-pages-code-behind – 2013-06-19 07:18:55

相關問題