funciona asp.net updatepanel scriptmanager

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); }

Detalles: agregue JavaScript mediante programación con RegisterStartupScript durante una devolución de datos asincrónica