RegisterStartupScript no funciona con ScriptManager, Updatepanel. ¿Porqué es eso?

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 = "\n" + "alert('Button1_Click client-side');\n" + ""; 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

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

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

 

CodeBehind Register StartUp Script

 protected void btnPostback_Click(object sender, EventArgs e) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(@""); ScriptManager.RegisterStartupScript(btnPostback,this.GetType(), "JSCR", sb.ToString(),false); } 

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

En mi caso, ScriptManager.RegisterStartupScript tampoco funcionaba.

No trabajo:

 ScriptManager.RegisterStartupScript(Me, Me.GetType(), String.Format("Data{0}", Me.ID), "", False) 

Trabajo:

 ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), String.Format("Data{0}", Me.ID), "", False) 

Me en el ejemplo es mi control personalizado heredado de System.Web.UI.WebControls.WebParts.WebPart

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

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?