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
trigggers et panneau de mise à jour. Et le message d'alerte ne s'affiche pas lors de l'événement timer_tick
Lorsque vous utilisez le panneau de mise à jour, vous ne pouvez pas appeler javascript comme ci-dessus. Vous devez utiliser
ScriptManager.RegisterStartupScript
Alors changez votre
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
à
ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType()
, "alert", javaScript, true);
Vous devez utiliser la classe ScriptManager parce que vous êtes un script d’inscription pour la publication et l’utilisation de updatepanel.
MSDN: ScriptManager.RegisterStartupScript
ScriptManager.RegisterStartupScript Méthode utilisée pour ajouter un script client à une page lorsque le contrôle est encapsulé dans un UpdatePanel.
Page 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 Enregistrer le script de démarrage
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);
}
Détail: Ajouter JavaScript par programme à l'aide de RegisterStartupScript lors d'une publication asynchrone
Dans mon cas, ScriptManager.RegisterStartupScript n'a pas fonctionné aussi.
Pas de travail:
ScriptManager.RegisterStartupScript(Me,
Me.GetType(),
String.Format("Data{0}", Me.ID),
"<script>alert(111);</script>",
False)
Travail:
ScriptManager.RegisterStartupScript(Me.Page,
Me.GetType(),
String.Format("Data{0}", Me.ID),
"<script>alert(111);</script>",
False)
Me
dans l'exemple est mon contrôle personnalisé hérité de System.Web.UI.WebControls.WebParts.WebPart
Ce doit être un peu plus tard, mais j'ai trouvé la solution ici http://forums.asp.net/p/1117430/5483679.aspx/1
Vous devez utiliser System.Web.UI.ScriptManager.RegisterClientScriptBlock au lieu de Page.ClientScript.RegisterStartupScript
Cela fonctionne pour moi quand je le fais comme ça
Private Sub test()
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "alert('hello')", True)
End Sub
mais quand j'ajoute SweerAlert cela ne fonctionnera pas
Private Sub test()
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "swal('Please Provide All Valid Message Information!')", True)
End Sub
avez-vous une idée pourquoi cela ne fonctionne pas.