web-gelistirme-sc.com

RegisterStartupScript, ScriptManager, Updatepanel ile çalışmıyor. Neden?

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 tetikleyiciler ve güncelleme paneli. Ve timer_tick olayında uyarı mesajı görünmüyor

38
sly_Chandan

Güncelleme panelini kullandığınızda, yukarıdaki gibi javascript'i çağıramazsınız. Kullanmak zorundasın 

ScriptManager.RegisterStartupScript

Öyleyse değiştir 

Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);

için 

ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType()
                                                      , "alert", javaScript, true);
98
Akash KC

ScriptManager sınıfını kullanmanız gerekir, çünkü postback yaparken ve updatepanel'i kullanırken kayıt komut dosyası olduğunuz için 

MSDN: ScriptManager.RegisterStartupScript

ScriptManager.RegisterStartupScript, kontrol bir UpdatePanel içine sarıldığında bir sayfaya istemci komut dosyası eklemek için kullanılan yöntemdir.

ASPX sayfası 

<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 Kayıt Başlangıç ​​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);

}

Ayrıntı: Asenkron bir geri gönderme sırasında RegisterStartupScript kullanarak programlı olarak JavaScript ekleme

9
Pranay Rana

Benim durumumda ScriptManager.RegisterStartupScript de işe yaramadı.

Çalışmıyor

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)

Örnekteki Me, System.Web.UI.WebControls.WebParts.WebPart kaynağından miras alınan özel kontrolümdür

6
feeeper

Biraz sonra olmamalı ama buradaki parayı buldum http://forums.asp.net/p/1117430/5483679.aspx/1

Page.ClientScript.RegisterStartupScript yerine System.Web.UI.ScriptManager.RegisterClientScriptBlock kullanmanız gerekir

2
Kaly

Böyle yaptığım zaman benim için çalışıyor.

Private Sub test()
        ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "alert('hello')", True)
    End Sub

ama SweerAlert eklediğimde işe yaramayacak

Private Sub test()
            ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "swal('Please Provide All Valid Message Information!')", True)
        End Sub

neden işe yaramadığı hakkında bir fikrin var mı?.

0
SMHasnain