2011-06-02 13 views
5

अपडेट नहीं कर रहे हैं मेरे पास दो अपडेट पैनल हैं (उन्हें ए और बी कॉल करें)। ए में, मेरे पास एक सरल चेकबॉक्स है। ऑटोपोस्टबैक सत्य पर सेट है। जब आप इसे चेक करते हैं (या इसे अनचेक करते हैं), तो यह उसी अपडेटपैनल के भीतर एक साधारण ड्रॉपडाउन को सक्षम/अक्षम कर देगा।समानांतर में काम कर रहे दो अपडेटपेनल,

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

मैंने पैनल बी पर UpdateMode = सशर्त का उपयोग करने का प्रयास किया है (यह सुनिश्चित करने के लिए कि यह पैनल ए द्वारा परेशान नहीं होगा) और यह वही परिणाम उत्पन्न करता है। मैंने सत्यापित किया है कि बी अपडेट() भी कहा जा रहा है।

संपादित

पैनल एक:

<asp:UpdatePanel ID="upMailScrub" runat="server"> 
    <ContentTemplate> 
     <asp:Button ID="btnAnalyzeLaunch" runat="server" onclick="btnAnalyzeLaunch_Click" Text="Analyze Launch" style="display: none" />  
     <table> 
      <tr> 
       <td><asp:CheckBox ID="cbxScrub" runat="server" Checked="true" 
         oncheckedchanged="cbxScrub_CheckedChanged" AutoPostBack="True" /></td><td><label for="cbxScrub">Scrub this campaign</label></td> 
       <td style="padding-left: 10px"> 
        Vendor:&nbsp;&nbsp;<asp:DropDownList ID="ddlScrubVendor" runat="server"> 
         <asp:ListItem Text="LexisNexis" Value="LexisNexis" /> 
        </asp:DropDownList> 
       </td> 
      </tr> 
     </table> 
    </ContentTemplate> 
</asp:UpdatePanel> 

पैनल बी:

<asp:UpdatePanel ID="upDdlCampaigns" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnAnalyzeLaunch" EventName="Click" /> 
    </Triggers> 
    <ContentTemplate> 
     <asp:HiddenField id="hidAction" runat="server" /> 
     <asp:Panel ID="pnlPleaseWait" runat="server"><img src="style/images/PleaseWait.gif" />&nbsp;Please wait while the Five9 Campaigns are retrieved...</asp:Panel> 
     <asp:DropDownList ID="ddlCampaigns" Visible="false" runat="server" class="required" 
      AutoPostBack="True" OnSelectedIndexChanged="ddlCampaigns_SelectedIndexChanged" /> 
     <asp:Button ID="btnRefreshDDL" runat="server" onclick="btnRefreshDDL_Click" style="display: none" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

कोई सुझाव? धन्यवाद।

+0

क्या आप कुछ कोड पोस्ट कर सकते हैं? – Jemes

उत्तर

3

आप UpdatePanel से बहुत ज्यादा पूछने :)

UpdatePanel 2 समानांतर अनुरोध है कि जिस तरह से के साथ काम नहीं कर सकते हैं। अपने परिणाम प्राप्त करने के लिए कुछ AJAX कॉल करने पर विचार करें।

आप क्यों पूछ सकते हैं, एक मूल कारण यह है कि प्रत्येक पृष्ठ में केवल एक व्यूस्टेट होता है। जब आप ए या बी से अनुरोध करते हैं, तो अपडेटपैनल डेटा भेजने/प्राप्त करने के लिए, तो व्यूस्टेट को एक नए व्यूस्टेट में बदलना चाहिए। अब, जब आप ए से परिणाम पूछते हैं, और आपके समाप्त होने से पहले, आप बी से परिणाम पूछते हैं, तो आपको 2 अलग-अलग व्यूस्टेट मिलेंगे, और उनमें से एक विफल होने जा रहा है क्योंकि मध्य समय में बदलाव आया है।

ViewState, केवल लगता है कि नहीं है कि हर अद्यतन पैनल क्लिक में, पेज पद वापस सभी आदानों पेज पर पोस्ट, दोनों ए और बी इनपुट और पेज के अंदर सभी बाकी है, यह भी एक समस्या है। उदाहरण के लिए इसे इमेजिंग करना, आप इनपुट ए + बी के साथ एक अपडेट पैनेल ट्रिगर करते हैं, और फिर ए सिरों से पहले, आप उसी इनपुट के साथ बी अपडेटपेनल को ट्रिगर करते हैं। अब ए, ए + बी, वही और बी के परिणामों की प्रतीक्षा करता है, लेकिन मध्य समय में ए से बी परिणाम अब अलग है क्योंकि बी ने उन्हें बदल दिया है - और विफल रहता है।

+0

यह सही समझ में आता है! पैनल ए की सादगी के कारण, मैं इसे जावास्क्रिप्ट के माध्यम से नियंत्रित करने जा रहा हूं; यह सिर्फ छुपाएं/दिखाएं और सक्षम/अक्षम करें। वहां वास्तव में कुछ भी भारी नहीं है। मैं अपनी लंबी चल रही प्रक्रिया को पृष्ठ पर एकमात्र अपडेट पैनेल के रूप में रखूंगा और मुझे विश्वास है कि यह काम करेगा। –

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