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事件上
当您使用 UpdatePanel 时,您无法像您尝试的那样使用 ClientScript 调用 JavaScript。您必须使用
ScriptManager.RegisterStartupScript
来代替。
所以改变你的
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
到
ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType(), "alert", javaScript, true);
您需要使用 ScriptManager 类,因为您在进行回发和使用 updatepanel 时注册脚本
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 注册启动脚本
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);
}
就我而言,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
肯定是稍后了,但我在这里找到了解决方案http://forums.asp.net/p/1117430/5483679.aspx/1
您必须使用 System.Web.UI.ScriptManager.RegisterClientScriptBlock 而不是 Page.ClientScript.RegisterStartupScript
如果页面似乎无法从您所在的班级访问。
Page page = HttpContext.Current.CurrentHandler as Page;
ScriptManager.RegisterStartupScript(page,page.GetType(), Guid.NewGuid().ToString(), yourScriptVariable, true);
以上都不适合我。 这已经成功了。
ScriptManager.RegisterClientScriptBlock(TryCast(sender, Control), Me.[GetType](), "alert", message, True)
我在
找到了它很好,它可以 100% 工作,但只是在 Devexpress ASPx 时不工作 MyPopupControl 已打开。