您好我有一个网络表单,我必须从codebehind文件中调用javascript函数。在我向页面添加更新面板之前,它工作正常。 我使用的代码是
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "OpenExe()", true);
我研究了一下,我发现如果我们在页面中添加一个scriptmanager / update面板,我们必须使用
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "Sample", "OpenExe()", true);
我用过这个,我也用过
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script language='javascript'>");
sb.Append(@"var cmdShell = new ActiveXObject('WScript.Shell');");
sb.Append(@"var myPath = '\'C:\\Temp\\stacks.exe\\'');");
sb.Append(@"</script>");
if (!ClientScript.IsStartupScriptRegistered("JSScript"))
{
ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
}
我也试过
ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "Sample", "OpenExe()", true);
但是javascript没有执行。有人能告诉我代码可能有什么问题吗?如果您想查看更多代码,请告诉我。提前谢谢
答案 0 :(得分:1)
如果您有更新面板,请单击此操作:
ScriptManager.RegisterStartupScript(yourupdatepanel, this.GetType(), "Sample", "OpenExe()", true);
将updatepanel控件ID放在第一个参数
上答案 1 :(得分:0)
我认为您需要将updatepanel的updatemode设置为“always”。 或者如果代码是按钮单击处理程序,您可以为updatepanel添加触发器,其中controleid attr是按钮的id。
<asp:UpdatePanel ID="upnlDetailsScratchCard" runat="server">
<ContentTemplate>
</ContentTemplate>
<Triggers><asp:PostBackTrigger ControlID="buttonID" /> </Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="upnlDetailsScratchCard" runat="server" UpdateMode="Always">
<ContentTemplate>
</ContentTemplate>
答案 2 :(得分:-1)
Java脚本代码仅在整个程序执行后执行。如果你的C#代码中有任何错误,那么从Code调用的脚本将无效。如果你从你的代码中调用Script,那么也是如此。只为一个事件执行一个脚本。