[英]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.