簡體   English   中英

如何從dynamicall添加的控件加載javascript函數?

[英]How to load javascript function from an dynamicall added control?

母版頁上有一個ScriptManager。

然后我得到了一個帶有ScriptManagerProxy和UpdatePanel的控件。

在UpdatePanel內部,我動態地添加了一個控件(也包含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編輯:當我添加控件時,它被調用但不是直接調用。

如果我這樣做,則將出現一個警報窗口:

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

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

該控件是動態添加在jQuery對話框中的。 我發現在關閉然后打開對話框之后,首先執行了Javacode。 我認為某種事件被觸發,以便代碼在那里執行。 是否可以強制此事件? 因此,在添加控件時直接執行腳本?

placeHolder.Controls.Add(dynamicReportControl);

此C#代碼不會立即執行javascript標記嗎?

請嘗試這樣的事情

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

其中UpdatePanel1是您的UpdatePanel

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

該代碼僅應在每個請求上運行嗎? 如果是這樣,為什么不將以下代碼添加到ASCX:

window.onload = doSomething();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM