2011-08-29 35 views
0

這可能屬於「我認爲你做錯了」類別,但我有一個用戶控件,它裏面有javascript,我想動態地將它加載到更新面板中。這是因爲初始頁面加載佔用空間很小,但是如果用戶發出請求,則加載控件(沒有什麼不尋常的)。使用LoadControl進行javascript控制的用戶控件

我發現我的JavaScript沒有被執行時控件加載。是否有一些神奇的東西讓JavaScript執行,還是永遠不會發生,因爲瀏覽器不會重新解析加載的標籤的HTML?

我的用戶控制

<div>hello</div> 
<script type="text/javascript" > 
alert('hello'); 
</script> 

頁ASCX

<asp:Button OnClick="LoadTheControl" runat="server">Click to Load</asp:Button> 
<asp:UpdatePanel ID="myUPanel" runat="server"> 
    <asp:PlaceHolder ID="WantControlHere" runat="server" /> 
    <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="LoadTheControl" /> 
    </Triggers> 
</asp:UpdatePanel> 

頁CS

protected void LoadTheControl(object sender, EventArgs e) 
{ 
    MyControl control = (MyControl)LoadControl("~/MyControl.ascx"); 
    control.ID = Guid.NewGuid().ToString(); 
    WantControlHere.Controls.Add(control); 
} 

螢火顯示了我控制的所有代碼是存在的,但JavaScript的是不執行。

請指出我的愚蠢。

回答

2

我想爲了執行JavaScript一旦你的控件加載,你必須使用ScriptManager.RegisterStartupScript方法註冊它。

內部控件的Page_Load方法註冊腳本您要執行這樣的:

ScriptManager.RegisterStartupScript(this, this.GetType(), "sub", "alert('me');", true); 
相關問題