2011-09-02 59 views
0

母版頁有一個ScriptManager。如何從動態添加控件加載JavaScript函數?

然後我得到了一個ScriptManagerProxy和UpdatePanel控件。

在UpdatePanel裏面我動態地添加一個Control(也包含一個ScriptManagerProxy),並且從那個控件我需要運行一些JavaScript代碼。

DynamicControl.ascx:

<script type="text/javascript"> 
    function doSomething() { 
     alert(1); 
    } 
</script> 

DynamicControl.ascx.cs:

public void Page_Load(object sender, EventArgs e) 
{ 
... 
ScriptManager.RegisterStartupScript(
this.Page, this.GetType(), "scriptID", 
"<script type='text/javascript'>doSomething();</script>", false); 

我的問題是功能 「DoSomething的()」 是從來沒有所謂的,我不知道爲什麼。 :S 編輯:它被調用,但不是直接當我添加控件。

如果我做這樣的代碼,會出現一個alertwindow:

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

好吧,我想我需要添加一些更多的信息:

是動態添加jQuery的對話框內的控制。我發現javacode先關閉然後打開對話框後執行。觸發某種事件,以便代碼在那裏執行。是否有可能強制這個事件?所以腳本在添加控件時直接執行?

placeHolder.Controls.Add(dynamicReportControl); 

此c#代碼不立即執行JavaScript標記?

回答

1

請嘗試這樣的事情

ScriptManager.RegisterStartupScript(
this.UpdatePanel1, this.UpdatePanel1.GetType(), "scriptID", 
"<script type='text/javascript'>doSomething();</script>", false); 

哪裏UpdatePanel1是您的UpdatePanel

0

嘗試將addScriptTags參數設置爲true,並從代碼中刪除腳本聲明。

該代碼只能在每個請求上運行嗎?如果是這樣,爲什麼不只是這個代碼添加到ASCX:

window.onload = doSomething(); 
+0

我想這也應該工作,但也有一些是那就是阻塞,所以當我關閉並打開我的jQuery對話框時,代碼首先在某種事件之後執行。 –