2009-04-07 16 views
12

मैं .NET 3.5 का उपयोग कर रहा हूं और सामुदायिक सर्वर 2008 ढांचे के अंदर बिल्डिंग पेज का उपयोग कर रहा हूं।संपूर्ण पेज पोस्टबैक के कारण अपडेटपेनल को कैसे रोकें?

पृष्ठों में से एक पर, मैं एक अपडेटपेनल काम करने की कोशिश कर रहा हूं।

मैं एक नमूना सीधे ASP.NET वेबसाइट से अद्यतन एक समय एक UpdatePanel में वर्तमान समय के लिए एक बटन, क्लिक करके लेकिन किसी कारण से ले लिया, जब मैं कोशिश करते हैं और समारोह पूरे पृष्ठ रीफ्रेश प्रदर्शन करते हैं।

यहाँ मैं क्या है:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label1.Text = "Panel refreshed at " + DateTime.Now.ToString(); 
    Label2.Text = "Panel refreshed at " + DateTime.Now.ToString(); 
} 
<asp:ScriptManager ID="ScriptManager1" runat="server"/> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <fieldset> 
      <legend>UpdatePanel</legend> 
      <asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br /> 
      <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 
     </fieldset> 
    </ContentTemplate> 
</asp:UpdatePanel> 

जब भी मैं बटन, यकीन है कि पैनल के अपडेट क्लिक करें - लेकिन पूरे पृष्ठ पोस्ट वापस! मैं पूरे पेज चमकती देख सकता हूं। क्या बिल्ली मैं गलत कर रहा हूँ?

मैं एक नेस्टेड मास्टरपेज के अंदर हूं, लेकिन मुझे यकीन नहीं है कि यह एक समस्या है या नहीं। क्या इस सामुदायिक सर्वर ढांचे में कुछ ऐसा हो सकता है जिसका मैं उपयोग कर रहा हूं जो सभी घटनाओं को पोस्टबैक करने का कारण बनता है?

उत्तर

16

क्या आपने Button1 को AsyncPostBackTrigger के रूप में ट्रिगर अनुभाग में सेट करने का प्रयास किया था? ChildrenAsTriggers संपत्ति true पर सेट करें और UpdateMode संपत्ति Conditional पर सेट करें।

protected void Button1_Click(object sender, EventArgs e) 
{  
    Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();  
    UpdatePanel1.Update(); 
}  
<asp:ScriptManager ID="ScriptManager1" runat="server"/> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"> 
    <Triggers>   
     <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />  
    </Triggers>  
    <ContentTemplate>   
     <fieldset>    
      <legend>UpdatePanel</legend>    
      <asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />    
      <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />   
     </fieldset>  
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

बहुत बहुत धन्यवाद! – user53885

+0

asyncpostbacktrigger के साथ ट्रिगर खंड मेरा दिन बना, बहुत बहुत धन्यवाद !! – BitQuestions

+0

क्या कोई यह समझा सकता है कि यह स्पष्ट एसिंक ट्रिगर क्यों आवश्यक है? डिफ़ॉल्ट रूप से आंशिक पृष्ठ अपडेट का कारण होने के लिए एक अद्यतन पैनेल के अंदर नियंत्रण नहीं हैं? – drizin

6

मैं ऊपर दिए गए कोड कोड में लेबल 2 नहीं देख रहा हूं। यदि लेबल 2 अपडेटपेनल के बाहर स्थित है, तो एक पूर्ण पृष्ठ रीफ्रेश होगा क्योंकि पृष्ठ के लिए लेबल 2 को ठीक से अपडेट करने के लिए यह आवश्यक है।

डिफ़ॉल्ट रूप से, अपडेट पैनल्स केवल उनके भीतर नियंत्रण द्वारा ट्रिगर किए जाने पर, उनके भीतर सामग्री को गतिशील रूप से ताज़ा कर देगा। यदि आपको कुछ फैनसीयर अपडेट करने की ज़रूरत है, तो पैनल के बाहर एक बटन रीफ्रेश करें या किसी भिन्न पैनल में लेबल को अद्यतन करने के लिए कहें, तो आपको अपने अपडेट पैनेल पर सशर्त विशेषता सेट करने और कुछ मैन्युअल अपडेट कॉल करने की आवश्यकता है आपके कोड में

+0

बहुत बहुत धन्यवाद! – user53885

2

अपने अपडेटपेनल नियंत्रण पर ChildrenAsTriggers="true" सेट करें।

2

"डिफ़ॉल्ट रूप से, UpdatePanels केवल गतिशील सामग्री उनके भीतर, ताज़ा होगी जब उनके भीतर नियंत्रण से शुरू हो रहा।"

अन्यथा पूरा पृष्ठ ताज़ा हो जाएगा! यही तो बात है!

2

एक अन्य संभावित कारण यह है कि यदि पृष्ठ में ClientIDMode="static" है, तो नियंत्रण जो आप रीफ्रेश करने की उम्मीद करते हैं केवल अपडेटपेनल पूरे पृष्ठ को रीफ्रेश करेगा।

समस्या को ठीक करने के लिए, आपको केवल ClientIDMode="AutoID" को नियंत्रण (ओं) पर सेट करने की आवश्यकता है जो UpdatePanel पोस्ट को ट्रिगर करना चाहिए।

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