2012-07-25 11 views
38
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 घटना पर दिखाई नहीं करता हैरजिस्टरस्टार्टअपस्क्रिप्ट स्क्रिप्ट मैनेजर, अपडेट पैनेल के साथ काम नहीं करता है। ऐसा क्यों है?

उत्तर

93

आप अद्यतन पैनल का उपयोग करते हैं तो आप जावास्क्रिप्ट ऊपर की तरह फोन नहीं कर सकते हैं। आप

ScriptManager.RegisterStartupScript 

उपयोग करने के लिए तो अपने

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

को

ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType() 
                 , "alert", javaScript, true); 
+0

मैं एएसपी.नेट 2.0 के साथ फंस गया हूं जहां आप पैनल आईडी नहीं दे सकते हैं, इसलिए यह काम नहीं करेगा। कोई सुझाव? –

+1

अद्यतन पैनल आईडी और प्रकार को पास करना गलत है, इसके बजाय 'this.Page' और 'this.GetType()' को पास करें। – modiX

9

आप उपयोगकर्ता ScriptManager वर्ग की जरूरत है क्योंकि आप जब पोस्टबैक कर रहे हैं और UpdatePanel

का उपयोग कर

MSDN रजिस्टर स्क्रिप्ट हैं: ScriptManager.RegisterStartupScript

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 रजिस्टर स्टार्टअप स्क्रिप्ट

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

} 

विवरण: Add JavaScript programmatically using RegisterStartupScript during an Asynchronous postback

2

बदले यह छोटा सा बाद में संयुक्त राष्ट्र होना चाहिए है, लेकिन मैं soluce यहां पाया http://forums.asp.net/p/1117430/5483679.aspx/1

आप करने के लिए है Page.ClientScript.RegisterSta के बजाय System.Web.UI.ScriptManager.RegisterClientScriptBlock का उपयोग करें। rtupScript

5

मेरे मामले में 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

+0

अतिरिक्त '.Page' ने स्क्रिप्ट के लिए' मास्टरपेज 'के भीतर पंजीकृत होने के लिए भी मेरे लिए काम किया। –

0

यह मेरे लिए काम करता है जब मैं इसे इस

पसंद है विरासत में मिला है
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 

क्या आपको पता है क्यों यह काम करता है न की क्या ज़रूरत है।

+0

क्या आप अपने पृष्ठ पर मिठाई आयात नहीं कर सकते हैं? या आपका swal हो सकता है ('कृपया सभी मान्य संदेश जानकारी प्रदान करें!') Sweetalert जोड़ने से पहले निष्पादित – feeeper

संबंधित मुद्दे