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イベントでアラートメッセージが表示されない
更新パネルを使用すると、上記のようなjavascriptを呼び出すことはできません。使用する必要があります
ScriptManager.RegisterStartupScript
だからあなたを変える
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
に
ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType()
, "alert", javaScript, true);
ポストバックを実行し、updatepanelを使用するときにスクリプトを登録するため、ScriptManagerクラスを使用する必要があります。
MSDN: ScriptManager.RegisterStartupScript
コントロールがUpdatePanel内にラップされるときに、クライアントスクリプトをページに追加するために使用されるScriptManager.RegisterStartupScriptメソッド。
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起動スクリプト
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);
}
詳細: 非同期ポストバック中にRegisterStartupScriptを使用してプログラムでJavaScriptを追加
私の場合、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
Page.ClientScript.RegisterStartupScriptの代わりにSystem.Web.UI.ScriptManager.RegisterClientScriptBlockを使用する必要があります。
このようにするとうまくいきます
Private Sub test()
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "alert('hello')", True)
End Sub
しかし、 SweerAlert を追加すると機能しません
Private Sub test()
ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "swal('Please Provide All Valid Message Information!')", True)
End Sub
なぜ機能しないのか、ご存知ですか?.