asp.net - clientscript registerstartupscript no funciona
RegisterStartupScript no funciona con ScriptManager, Updatepanel. ¿Porqué es eso? (5)
Cuando usas el panel de actualización, entonces no puedes llamar a javascript como se indica arriba. Tienes que usar
ScriptManager.RegisterStartupScript
Entonces cambia tu
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
a
ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType()
, "alert", javaScript, true);
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
triggers y panel de actualización. Y el mensaje de alerta no aparece en el evento timer_tick
Debe ser un poco más tarde, pero encontré la solución aquí http://forums.asp.net/p/1117430/5483679.aspx/1
Debe utilizar System.Web.UI.ScriptManager.RegisterClientScriptBlock en lugar de Page.ClientScript.RegisterStartupScript
En mi caso, ScriptManager.RegisterStartupScript tampoco funcionaba.
No trabajo:
ScriptManager.RegisterStartupScript(Me,
Me.GetType(),
String.Format("Data{0}", Me.ID),
"<script>alert(111);</script>",
False)
Trabajo:
ScriptManager.RegisterStartupScript(Me.Page,
Me.GetType(),
String.Format("Data{0}", Me.ID),
"<script>alert(111);</script>",
False)
Me
en el ejemplo es mi control personalizado heredado de System.Web.UI.WebControls.WebParts.WebPart
Funciona para mí cuando lo hago así
Private Sub test()
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "alert(''hello'')", True)
End Sub
pero cuando le agregue SweerAlert no funcionará
Private Sub test()
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "swal(''Please Provide All Valid Message Information!'')", True)
End Sub
¿tienes alguna idea de por qué no funciona?
Necesita utilizar la clase ScriptManager porque es una secuencia de comandos de registro cuando realiza la devolución de datos y utiliza el panel de actualización.
MSDN: ScriptManager.RegisterStartupScript
Método ScriptManager.RegisterStartupScript utilizado para agregar script de cliente a una página cuando el control se ajusta dentro de un UpdatePanel.
Página 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 Register StartUp Script
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);
}