繁体   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