rob*_*ert 5 .net javascript c# asp.net registerstartupscript
好.我面临的问题是我有自己的自定义控件,我做一个查询,获取记录,并根据数据动态添加HTML控件到页面.
现在有添加一些动态JavaScript的问题
我是在文字控件的帮助下完成的.
<asp:Literal runat="server" ID="latEventToolTipJqueryScripts"></asp:Literal>
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力
<script language="javascript" type="text/javascript">
// <![CDATA[
Sys.Application.add_load(WireEvents_<%=this.ID%>); // fix wiring for .NET ajax updatepanel
$(WireEvents_<%=this.ID%>); // handle page load wiring
function WireEvents_<%=this.ID%>() {
<asp:Literal runat="server" ID="latEventToolTipJqueryScripts"></asp:Literal>
}
// ]]>
</script>
Run Code Online (Sandbox Code Playgroud)
我从代码后面动态添加文字文本.
但是,将控件放在updatepanel中时,回发不会更新脚本.
编辑:Sys.Application.add_load使用updatepanel重新编写必要的功能.问题是需要代替文字的脚本在更新面板中时不会更新.
我已经尝试过ClientScript.RegisterStartupScript,但它与文字控制技巧具有相同的效果.有帮助吗?
---------------------------已解决(tnx到Pranay Rana)---------------- ------------------
摆脱了ascx方面的文字.以及Sys.Application.add_load
现在它只在后面的代码中.让我失望的是JQuery的事情.
this.strBuilderJS.Append( "<script language='javascript' type='text/javascript'>" +
"$(WireEvents_" + this.ID + ");" +
"function WireEvents_" + this.ID + "(){"+
" alert('stuff');");
this.strBuilderJS.Append( "}</script>");
Run Code Online (Sandbox Code Playgroud)
然后
ScriptManager.RegisterStartupScript(this, this.GetType(), "strBuilderJS", strBuilderJS.ToString(), false);
Run Code Online (Sandbox Code Playgroud)
使用ScriptManager.RegisterStartupScript()注册您的脚本...可以解决问题...
检查此解决您的问题:在异步回发期间使用 RegisterStartupScript 以编程方式添加 JavaScript