2009-05-27 8 views
5

मुझे कोडबेंड में पोस्टबैक या पेज रीलोड को मजबूर करने के लिए एक तरीके की आवश्यकता है। कुछ जावास्क्रिप्ट का उपयोग करने का प्रयास किया लेकिन इसे काम नहीं मिला। नेट ब्राउज़ करना मुझे पहला सवाल है "क्यों"?Asp.Net (vb) फोर्स पोस्टबैक कोड-पीछे

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

विचार सत्र में अंतिम पसंद को स्टोर करना है, और पहले पृष्ठ पर जांचना है। सत्र विकल्प डिफ़ॉल्ट विकल्प के अलावा अन्य है। अब मैं उस पर आधारित ड्रॉपडाउन सूची के चयनित इंडेक्स को बदल सकता हूं, लेकिन स्पष्ट रूप से डेटासोर्स पेज.लोड से तेज़ी से ट्रिगर करता है, इसलिए जब तक कि मैं एक रीलोड को मजबूर नहीं कर सकता, इससे मदद नहीं मिलेगी।

कोई विचार? एक पूर्ण पृष्ठ पोस्टबैक/रीलोड कोर्स का एकमात्र विकल्प नहीं है, केवल ग्रिडव्यू/डेटासोर्स को रीफ्रेश करने के लिए मजबूर करना पर्याप्त है। मैं सिर्फ यह नहीं जानता कि पूरे पृष्ठ को पुनः लोड करने के अलावा अन्य कैसे करें।

धन्यवाद।

उत्तर

9

आप पृष्ठ पर एक AJAX टाइमर डाल सकते हैं, जब वे वापस आते हैं, तो ऑनटिक ऑटोपोस्टबैक के कारण पृष्ठ को प्रस्तुत करते हैं, और फिर इसे अक्षम करते हैं, लेकिन ईमानदार होने के कारण ... यह एक भयानक काम है छोटी समस्या

प्रोग्रामिंग रूप से ड्रॉप डाउन सूची मूल्य को बदलने के बाद आप अपने ग्रिड व्यू को फिर से क्यों नहीं जोड़ सकते हैं। जैसे समय रेखा कुछ ऐसा होगा।

  • व्यक्ति पृष्ठ (नहीं एक पोस्ट वापस) डिफ़ॉल्ट मान
  • पृष्ठ लोड
    • अपने सत्र चर
    • तो चेक एक मूल्य पाया जाता है
    • सेट के साथ
    • GridView बांधता रिटर्न आपकी DropDownList चयनित मान
    • ग्रिड व्यू/डेटासोर्स के लिए फिर से .DataBind() पर कॉल करें इसे पुनर्जीवित करने के लिए मजबूर करने के लिए।
+0

अरे ... आप आज एक रोल पर रहे हैं! +1 :-) – Cerebrus

+0

हां चीयर्स दोस्त;) –

+0

ग्रेट, संक्षिप्त समाधान जो सीधे प्रश्न का उत्तर देता है। +1! – Mattygabe

2

आप किसी दूसरे पृष्ठ घटना का प्रयोग क्यों नहीं कर सकते? क्या आपने प्रीरेंडर पूर्ण की कोशिश की है? याद रखें कि पोस्टबैक में घटनाओं के क्रम महत्वपूर्ण हैं। PreRenderComplete अंतिम ईवेंट पृष्ठ प्रस्तुत करने से पहले कॉल किया जाने वाला ईवेंट है। पेज_लोड वास्तव में बीच में कहीं है।

मैं काम पर हर समय ऐसा करता हूं।

Protected Sub Page_PreRenderComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRenderComplete 
    Session("Value") = ddlList.SelectedValue 
End Sub 

वह कोड शायद सही नहीं है, लेकिन यह आपको केवल इस घटना का विचार देता है।

1

ग्रिड व्यू के डेटा बाइंडिंग ईवेंट को क्यों नहीं संभालें और उस हैंडलर में सत्र में मूल्य की जांच क्यों करें? यदि यह ड्रॉपडाउन सूची पैरामीटर के बराबर नहीं है, तो आप इसे बदल सकते हैं और डेटाबेस को अपना कोर्स ले सकते हैं।

अधिक सामान्य नमूने के लिए my answer here देखें जो डेटास्रोत नियंत्रण के SelectCommand को बदलता है। इसी तरह आप नियंत्रण पैरामीटर के मूल्य को बदलने में सक्षम होना चाहिए।This answer वही करता है, लेकिन एक (नेस्टेड) ​​पुनरावर्तक के लिए।

यदि यह काम नहीं करता है, तो ईइन का जवाब सबसे अच्छा तरीका होगा (ग्रिड व्यू को फिर से बांधें)।

0

हर किसी की मदद के लिए धन्यवाद। मैं सेरेब्रस के सुझाव का पालन करने वाला था, लेकिन फिर एक सहयोगी ने एक अलग विचार का प्रस्ताव दिया। टिप्पणी की गई रेखा को नीचे की गई असम्बद्ध रेखा के साथ बदल दिया गया था।

 
<SelectParameters> 
    <%--<asp:Parameter Name="timevalue" Type="String" DefaultValue="now" />--%> 
    <asp:ControlParameter ControlID="timevalueDropDownList" PropertyName="SelectedValue" Name="timevalue" DefaultValue="now" /> 
</SelectParameters> 

इसके अलावा, मेरी पहली पोस्ट में सबकुछ लागू होता है। पेजेलोड में मैंने सत्र की जांच की और समय के अनुसार समय-समय पर DropDownList में परिवर्तन लागू किए। सत्र को हमेशा चयनित इंडेक्स चेंज इवेंट आदि में अपडेट किया गया था।

लेकिन हमेशा के रूप में, प्रतिक्रियाओं के साथ अच्छे विचार, और मैं भविष्य में इन मुद्दों को संदर्भित करना सुनिश्चित कर दूंगा। मेरे पास इनमें से बहुत कुछ है लेकिन अभी उनके आस-पास के अन्य तरीकों को मिला है, अब मुझे शायद नहीं करना पड़ेगा। ;)

+0

ऊपर मेरा जवाब देखें ... आपको यो को कॉल करने में सक्षम होना चाहिए urGridview.DataBind() प्रोग्रामेटिक रूप से ड्रॉप डाउन सूची मूल्य –

+0

सेट करने के बाद मैंने वास्तव में डेटा स्रोत को सत्र मान सेट करने के बाद डेटाबेस को सही करने का प्रयास किया, लेकिन यह काम नहीं किया। यह पहली बात थी जो मैंने सोचा था। ईमानदार होने के लिए, मुझे यकीन नहीं है कि अगर मुझे ड्रॉपडाउन सूची को तब से ऑटोपॉस्टबैक = "सत्य" पर डालने का एहसास हुआ, हालांकि। जैसा कि कहा गया है कि मैं सभी उत्तरों की सराहना करता हूं और हमेशा के रूप में, मैंने आपको उन लोगों पर वोट दिया। जब मैं कहता हूं कि भविष्य में इसी तरह के मुद्दों में मैं इस थ्रेड पर जांच करूंगा, तो मुझे इसका मतलब है। मैंने पहले, हर बार ऐसा किया है। मैं केवल यहां आकर पूछता हूं कि एक डीएल कब आ रहा है या मैं बहुत लंबे समय तक फंस गया हूं और वैसे भी जवाब नहीं दे सकता हूं। ;) – Zan

0

मुझे एक ही समस्या थी ... केज़ज़र का फिक्स मेरे लिए काम करता था।

बस डाल:

Chart1.databind() 

PreRenderComplete घटना में अपने में कोड-पीछे।

चूंकि प्रीरेंडर चार्ट को प्रस्तुत करने से पहले आखिरी चीज़ के रूप में पूरा करता है, यदि आप यहां अपने चार्ट को "बांध" देते हैं, तो यह बीमा करता है कि आपके ड्रॉपडाउन में दृश्यमान रूप से "दिखाना" क्या है, वास्तव में मूल्यों के रूप में उपयोग किया जाएगा अपने चार्ट को प्रस्तुत करने के लिए।

हमारा मुद्दा ऑटो-पोस्टबैक कैस्केडिंग ड्रॉपडाउन के साथ था। हमारे पास देश, राज्य, शहर की गिरावट थी। यदि उपयोगकर्ता ने "संयुक्त राज्य", "ओहियो", "क्लाल्वेलैंड" चुना है, तो सब कुछ ठीक काम करता है, लेकिन फिर यदि वे वापस आ गए और देश को "फ्रांस" में बदल दिया, तो चार्ट पर एक त्रुटि होगी, भले ही ड्रॉपडाउन ऑटो हो इस परिवर्तन के लिए समायोजित, और राज्य और शहर को उपलब्ध पहले मानों पर रीसेट करें। अपने मूल्यों को एक और तरीका है, के बाद ड्रॉपडाउन ऑटो को सही ... भयानक किया गया था

0

अगर आप अभी भी एक ऐसा करने के लिए वापस एक पद के लिए देख रहे हैं:

PreRenderComplete में autopostback जोड़ना "पाने के लिए चार्ट मजबूर! एक ही पृष्ठ पर response.redirect("~/ImOnThisPageAlready");
बहुत सरल, यकीन नहीं कैसे व्यस्त अपनी साइट है, लेकिन यह बहुत जल्दी मेरे छोटे आवेदन के लिए काम करता है।