6

मेरे पास ऑटोपोस्टबैक के साथ एक एएसपी.Net रेडियोबटन सूची नियंत्रण सही है। मेरे पास एक ऑन-सिलेटेड इंडेक्स चेंज फ़ंक्शन भी है जिसे जब भी कोई उपयोगकर्ता चयन बदलता है तब कहा जाता है। अंत में, उपयोगकर्ता जानकारी इस पर नियंत्रण के लिए अनुरोध किया प्रदान करने के लिए आवश्यक है, इसलिए मैं जब उपयोगकर्ता ऊपर page--एएसपी.Net AJAX UpdatePanel को चुनने में विफल रहता है चयनित इंडेक्स चेंज इवेंट

<asp:RadioButtonList ID="rblHighestDegree" runat="server" AutoPostBack="true" 
     onselectedindexchanged="rblHighestDegree_SelectedIndexChanged"> 
    <asp:listitem Runat="server" Text="Master's Degree" Selected="True" /> 
    <asp:listitem Runat="server" Text="Doctorate" /> 
</asp:RadioButtonList> 

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

मैं एक दूसरे नियंत्रण है कि मैं सक्षम या अक्षम, ऊपर चयन के आधार पर, कोड-पीछे में ...

<asp:ScriptManager ID="scriptmanager1" runat="server" /> 
<asp:UpdatePanel ID="updatepanel1" runat="server"> 
<ContentTemplate> 
<asp:RadioButtonList ID="rdlYearsOfStudy" runat="server" Enabled="false"> 
<asp:listitem Runat="server" Text="Less than 3 years" /> 
<asp:listitem Runat="server" Text="3 - 4 years" /> 
<asp:listitem Runat="server" Text="5 - 6 years" /> 
</asp:RadioButtonList> 
</ContentTemplate> 
<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="rblHighestDegree" EventName="SelectedIndexChanged" /> 
</Triggers> 
</asp:UpdatePanel> 

समस्या मैं आ रही हैं केवल तब होता है केवल के बाद मैं रखा है एएसपी.Net AJAX UpdatePanel के भीतर यह दूसरा नियंत्रण एक एसिंक्रोनस पोस्टबैक सक्षम करने के लिए (ऊपर दिखाया गया है)। एक बार जब मैंने ऐसा किया, तो मूल रेडियोबटन सूची नियंत्रण केवल तब पोस्टबैक होगा जब मैं एक सूची Item चुनता हूं जो डिफ़ॉल्ट रूप से चयनित होता है जब उपयोगकर्ता पृष्ठ पर पहुंचे। यदि उपयोगकर्ता बाद में मूल डिफ़ॉल्ट चयन का चयन करता है, तो पोस्टबैक नहीं होता है।

स्पष्टीकरण के लिए, यदि मैं एएसपी.Net AJAX UpdatePanel में लागू दूसरे नियंत्रण को रखे बिना पोस्टबैक करता हूं, तो चयनित इंडेक्स चेंज किए गए काम इससे कोई फर्क नहीं पड़ता कि कौन से रेडियोबटन सूची सूची उपयोगकर्ता द्वारा चुने गए हैं। दूसरी ओर, जब मैं AsyncPostBackTrigger को लागू करने के लिए UpdatePanel के अंदर नियंत्रण रखता हूं, तो पोस्टबैक केवल गैर-डिफ़ॉल्ट सूची आइटम्स के चयन के लिए होता है।

अधिक जानकारी संगत हो सकती है कि मैं माइक्रोसॉफ्ट विजुअल स्टूडियो 2008, और UpdatePanel नियंत्रण है कि मैं उपयोग कर रहा हूँ माइक्रोसॉफ्ट AJAX पुस्तकालय (नहीं ASP.NET AJAX नियंत्रण टूलकिट) का हिस्सा है के साथ कोडिंग कर रहा हूँ है।

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

किसी भी और सभी मदद के लिए अग्रिम धन्यवाद!

+0

ध्यान दें कि मैंने एएसपीएक्स पेज पर परिभाषित ट्रिगर्स को हटाने का भी प्रयास किया है और इसके बजाय, पेज_लोड इवेंट में रेडियोबटन लिस्ट नियंत्रण पंजीकृत किया है: "scriptmanager1.RegisterPostBackControl (rblHighestDegree);" दुर्भाग्यवश, इस दृष्टिकोण के परिणामस्वरूप मैंने वही व्यवहार किया जिसकी मैंने उपरोक्त शिकायत की थी। – cjo30080

+0

यदि आप जेनरेट किए गए HTML को देखते हैं, तो आप देखेंगे कि डिफ़ॉल्ट चयनित रेडियो में __doPostBack को कॉल करने के लिए ऑनक्लिक सेट नहीं है। –

उत्तर

4

मेरे पास एक ही समस्या थी और पाया कि जेनरेट किए गए HTML में डिफ़ॉल्ट चयन पर क्लिक हैंडलर नहीं था। सूची में मौजूद अन्य रेडियो बटनों में __doPostBack को कॉल करने के लिए सभी हैंडलर क्लिक करें। इसलिए मैं jQuery के इस बिट कहा:

$("#rbl input[checked]").click(function (e) 
{ 
    var id = e.target.id.replace('_', '$'); 
    setTimeout(function() { __doPostBack(id, ""); }, 0); 
}); 

हालांकि, भले ही ajax कॉल अब काम कर रहा था के रूप में उम्मीद, सर्वर-साइड कोड अभी भी SelectedIndexChanged हैंडलर को क्रियान्वित नहीं किया गया।

यह सोचकर कि यह हो सकता है क्योंकि सर्वर जानता है कि डिफ़ॉल्ट चयन क्या था (था) और देखता है कि पोस्ट चयन समान है और इसलिए सोचता है कि चयनित इंडेक्स नहीं बदला गया था और इसलिए हैंडलर निष्पादित नहीं किया गया था।

तब मैंने सोचा कि जब किसी अन्य रेडियो का चयन किया गया था, तो सर्वर को दृश्यमान के माध्यम से याद रखना चाहिए था। जिसने मुझे याद किया कि मेरे रेडियोबुटटन सूची के कंटेनर पर viewstatemode="Disabled" था। तो मैंने radiobuttonlist पर viewstatemode="Enabled" सेट किया है और अब यह अपेक्षित के रूप में काम कर रहा है।

+0

इस प्रतिक्रिया के लिए धन्यवाद। मैंने इसे एक शॉट दिया, लेकिन दुर्भाग्य से, radiस्टटोड = "सक्षम" को रेडियोबूटटनलिस्ट पर सेट करने से व्यवहार में कोई बदलाव नहीं आया या मेरी समस्या का समाधान नहीं हुआ। – cjo30080

+0

बस व्यूस्टेट को सक्षम करने के लिए पर्याप्त नहीं है। क्या आपने __doPostBack को कॉल करने के लिए क्लाइंट-साइड क्लिक हैंडलर संलग्न किया था? –

0

मैं इस समस्या को हां, तो यह इस तरह से हल किया है, तो आप में सी # कोड (लोड पृष्ठ) AutoPostBack और SelectedIndexChange ईवेंट हैंडलर सेट करना होगा और html टैग में है।

protected void Page_Load(object sender, EventArgs e) 
    { 
      rblHighestDegree.AutoPostBack = true; 
      rblHighestDegree.SelectedIndexChanged += 
      new EventHandler (rblHighestDegree_SelectedIndexChanged); 
    } 

और HTML में: उदाहरण के लिए

<asp:RadioButtonList ID="rblHighestDegree" runat="server" AutoPostBack="true" 
    onselectedindexchanged="rblHighestDegree_SelectedIndexChanged"> 
+0

केवल autopostback tot rue सेटिंग मेरे लिए काम किया ... –

2

माइक्रोसॉफ्ट कहा गया है कि यह डिजाइन द्वारा है। वे 2 कामकाज की पेशकश करते हैं, लेकिन दोनों कामकाज में ऐसे मुद्दे हैं जो वास्तविक समाधान को रोक सकते हैं।

http://connect.microsoft.com/visualstudio/feedback/details/508710/radiobuttonlist

0

मैं पीछे कोड में रेडियो बटन सूची का निर्माण किया है, और SelectedIndex = 0 दूर छोड़ दिया, तो ऑनलोड में मैं पहली बार आइटम जावास्क्रिप्ट का उपयोग करने का क्लिक() कहा जाता है। यह सबसे आसान बात है जो मेरे लिए काम करती है।

0

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन के रूप में जेफ Shepler ने कहा, डिफ़ॉल्ट विकल्प के लिए कोई क्लिक हैंडलर है, और आंशिक पोस्टबैक एक नहीं बनाएगा।

मुझे अपडेटमोडेल = "हमेशा" (जो डिफ़ॉल्ट है) के साथ एक नए अपडेट पैनल में पहली रेडियोबुटटन सूची को लपेटकर इसे गोल किया गया है, इसलिए इसे किसी भी पोस्टबैक द्वारा अपडेट किया जाता है।

मैं विशेष फॉर्म लेआउट के कारण एक ही अपडेट पैनल में रेडियोधर्टलिस्ट दोनों को डालने के समाधान का उपयोग नहीं कर सका।