RegisterStartupScript不适用于ScriptManager,UpdatePanel。 这是为什么?
protected void timer1_Tick(object sender, EventArgs e) { foreach (RepeaterItem item in rpChat.Items) { TextBox txt = item.FindControl("txtChatMessage") as TextBox; if (txt != null) { message[i] = txt.Text; i--; } } lblStatusChat.Text = ""; RepeaterBind(); string javaScript = "<script language=JavaScript>\n" + "alert('Button1_Click client-side');\n" + "</script>"; Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript); }
timer_click
触发器和更新面板。 警报消息不会显示在timer_tick事件上
当你使用更新面板,那么你不能像上面调用JavaScript。 你必须使用
ScriptManager.RegisterStartupScript
所以改变你的
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
至
ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType() , "alert", javaScript, true);
您需要使用ScriptManager类,因为您在执行回发和使用updatepanel时是注册脚本
MSDN: ScriptManager.RegisterStartupScript
ScriptManager.RegisterStartupScript方法用于将控件包装到UpdatePanel中时将客户端脚本添加到页面。
ASPX页面
<div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Label ID="lblDisplayDate" runat="server" Text="Label"></asp:Label> <asp:Button ID="btnPostback" runat="server" onclick="btnPostback_Click" Text="ClickMe" /> </ContentTemplate> </asp:UpdatePanel> </div>
CodeBehind注册StartUp脚本
protected void btnPostback_Click(object sender, EventArgs e) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(@"<script language='javascript'>"); sb.Append(@"var lbl = document.getElementById('lblDisplayDate');"); sb.Append(@"lbl.style.color='red';"); sb.Append(@"</script>"); ScriptManager.RegisterStartupScript(btnPostback,this.GetType(), "JSCR", sb.ToString(),false); }
详细信息: 在asynchronous回发期间使用RegisterStartupScript以编程方式添加JavaScript
在我的情况ScriptManager.RegisterStartupScript不起作用。
不行:
ScriptManager.RegisterStartupScript(Me, Me.GetType(), String.Format("Data{0}", Me.ID), "<script>alert(111);</script>", False)
工作:
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), String.Format("Data{0}", Me.ID), "<script>alert(111);</script>", False)
Me
在这个例子中是我的自定义控件从System.Web.UI.WebControls.WebParts.WebPart
inheritance
它一定是稍后,但我在这里find了soluce http://forums.asp.net/p/1117430/5483679.aspx/1
您必须使用System.Web.UI.ScriptManager.RegisterClientScriptBlock而不是Page.ClientScript.RegisterStartupScript
当我这样做的时候它适用于我
Private Sub test() ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "alert('hello')", True) End Sub
但是当我添加SweerAlert它不会工作
Private Sub test() ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "swal('Please Provide All Valid Message Information!')", True) End Sub
你有什么想法,为什么它不工作。