RegisterStartupScript doesn't work with ScriptManager,Updatepanel. Why is that?

前端 未结 4 1582
不知归路
不知归路 2020-11-29 03:31
protected void timer1_Tick(object sender, EventArgs e)
    {
        foreach (RepeaterItem item in rpChat.Items)
        {
            TextBox txt = item.FindControl         


        
相关标签:
4条回答
  • 2020-11-29 03:43

    When you use an UpdatePanel, then you can not call JavaScript using ClientScript as you have tried to. You have to use ScriptManager.RegisterStartupScript instead.

    So change your

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

    to

    ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType(), "alert", javaScript, true);
    
    0 讨论(0)
  • 2020-11-29 03:46

    In my case ScriptManager.RegisterStartupScript didn't work too.

    Not work:

    ScriptManager.RegisterStartupScript(Me, 
      Me.GetType(), 
      String.Format("Data{0}", Me.ID), 
      "<script>alert(111);</script>", 
      False)
    

    Work:

    ScriptManager.RegisterStartupScript(Me.Page, 
      Me.GetType(), 
      String.Format("Data{0}", Me.ID), 
      "<script>alert(111);</script>", 
      False)
    

    Me in the example is my custom control inherited from System.Web.UI.WebControls.WebParts.WebPart

    0 讨论(0)
  • 2020-11-29 04:06

    It must be un little bit later but I found the soluce here http://forums.asp.net/p/1117430/5483679.aspx/1

    You have to use System.Web.UI.ScriptManager.RegisterClientScriptBlock instead of Page.ClientScript.RegisterStartupScript

    0 讨论(0)
  • 2020-11-29 04:09

    You need to user ScriptManager class because you are register script when doing postback and using updatepanel

    MSDN: ScriptManager.RegisterStartupScript

    ScriptManager.RegisterStartupScript method used to add client script to a page when the control is wrapped inside an UpdatePanel.

    ASPX page

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

    Detail : Add JavaScript programmatically using RegisterStartupScript during an Asynchronous postback

    0 讨论(0)
提交回复
热议问题