2009-02-02 11 views
12

के बाहर नियंत्रण अपडेट करना तो मेरे पास UserControl है जिसमें कुछ कैस्केडिंग DropDownList एस है। सूची 1 से चयन सूची 2 को सक्षम बनाता है, जो बदले में सूची 3 सक्षम करता है। एक बार जब आप सभी तीन सूचियों में चयन कर लेते हैं, तो आप अगले पृष्ठ पर जा सकते हैं।UpdatePanel

DropDownList एस UpdatePanel के अंदर हैं। लेकिन "अगला पृष्ठ" बटन UpdatePanel के बाहर है। उस बटन को अक्षम किया जाना चाहिए जब तक कि सभी तीन सूचियों में चयन न हो, और फिर इसे फिर से सक्षम किया जाना चाहिए। लेकिन चूंकि बटन UpdatePanel के बाहर है, इसलिए जब मैं चयन करता हूं तो यह अपडेट नहीं होता है। (संपादित: "अगला पृष्ठ" बटन एक पेज भी UserControl जिसमें पर है।)

मैं इस को हल करने का एक तरीका पता है:

var scriptManager = ScriptManager.GetCurrent(this.Page); 
scriptManager.RegisterPostBackControl(dropDownList1); 
scriptManager.RegisterPostBackControl(dropDownList2); 
scriptManager.RegisterPostBackControl(dropDownList3); 

यह एक पोस्टबैक सुनिश्चित करता है जब किसी भी ड्रॉपडाउन सूची है बदल गया, ताकि बटन अपडेट हो सके। लेकिन अगर मैं ऐसा करता हूं, तो मैं पहले स्थान पर UpdatePanel से छुटकारा पाने के द्वारा सरल बना सकता हूं।

क्या कुछ और चालाक जावास्क्रिप्ट या कुछ के माध्यम से कोई और तरीका है, कि मैं अजाक्स को छोड़ दिए बिना UpdatePanel के बाहर नियंत्रण अपडेट कर सकता हूं?

उत्तर

6

क्या आप "अगले पृष्ठ" के आस-पास एक अद्यतन पैनल नहीं जोड़ सकते हैं और फिर अगले पृष्ठ अपडेट पैनल को ट्रिगर करने के लिए ड्रॉपडाउनलिस्ट अपडेट पैनेल में ट्रिगर जोड़ सकते हैं?

बस विचारों बाहर फेंक, वास्तव में यह करने की कोशिश की बिना :)

+0

यह मुझे सबसे करीब है जो मुझे करना था। ट्रिगर के बजाए, मुझे अगला बटन ठीक से सेट करने के लिए मुख्य पृष्ठ (इसे कास्टिंग। पेज) पर एक विधि को कॉल करना पड़ा। मुझे UpdatePanel के अंदर काम करने के लिए अगला बटन पर RegisterPackBackControl भी पंजीकृत करना पड़ा। –

1

यह आदर्श, जावास्क्रिप्ट में किया जा जाएगा क्लिक ईवेंट हैंडलर में एक सर्वर साइड सत्यापन जाँच के साथ।

एक त्वरित jQuery उदाहरण:

//assuming the dropdowns all have the css class "cascade" 
$('select.cascade').change(function() { 
    If ($('option:selected',this).length == 3) { 
    $('input[id$=btnNext]').removeAttr('disabled'); 
    } 
}); 
12

प्लेस अगले बटन के आसपास एक UpdatePanel और इतना है कि यह एक async पोस्टबैक आग ड्रॉपडाउन से प्रत्येक के लिए एक ट्रिगर बनाएं। उदाहरण के लिए:

<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="dropDownList1" /> 
    <asp:AsyncPostBackTrigger ControlID="dropDownList2" /> 
    <asp:AsyncPostBackTrigger ControlID="dropDownList3" /> 
</Triggers> 
2

आप इसे update_panel2 में रखने और update_panel2.update() कह कर अद्यतन पैनल के बाहर एक नियंत्रण upddate कर सकते हैं।

नोट करने के लिए UpdatePanel conditional पर UpdateMode पर ध्यान दें।

+0

विश्वास करो या नहीं, यह वास्तव में मेरे लिए काम किया। धन्यवाद दोस्त। –

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