2009-10-21 24 views
9

में एकाधिक आइटम नहीं चुने गए हैं पृष्ठ लोड के दौरान, इंडेक्स 0 पहले से ही चुना गया था। तो फिर इस कोड को बयान चयनित सूचकांक 1:System.Web.HttpException: DropDownList

dropDownList.Items.FindByValue(myValue).Selected = true; 
// assume myValue is found at index 1 of dropDownList.Items 

पृष्ठ लोड के पूरा होने पर, पेज कहता है: "System.Web.HttpException: एक DropDownList में चयनित एक से अधिक आइटम नहीं हो सकतीं।"

मुझे अपवाद क्यों मिला? और मैं इसे कैसे ठीक कर सकता हूं?

+0

अपवाद संदेश का कौन सा हिस्सा आपको समझ में नहीं आया? –

+1

मैं अपवाद की सामग्री को समझ गया। हालांकि, मुझे समझ में नहीं आया कि यह क्यों हुआ। बाद में मैंने इसे समझ लिया। मेरा निम्नलिखित उत्तर देखें –

उत्तर

37

मैंने देखा कि दोनों इंडेक्स 0 और इंडेक्स 1 में गुणों को "चयनित" सत्य पर सेट किया गया था (ड्रॉपडाउनलिस्ट। इटम्स [0]। चयनित और ड्रॉप डाउनलिस्ट। इटम्स [1]। चयनित दोनों सत्य थे)। हालांकि, DropDownList.SelectedIndex अभी भी 0 था, भले ही अनुक्रमणिका 1 हाल ही में सेट किया गया था।

मैंने सूची चयन को पहले से साफ़ करके इसे हल करने का प्रयास किया।

dropDownList.ClearSelection(); 
dropDownList.Items.FindByValue(myValue).Selected = true; 

लेकिन इससे मदद नहीं मिली। वही अपवाद हुआ।

dropDownList.SelectedIndex = dropDownList.Items.IndexOf(dropDownList.Items.FindByValue(myValue)); 

अब सूची में चयन परिवर्तन propogates:

क्या मदद किया था, चयनित मान के एक और तरीका है की स्थापना की गई थी।

तो, dropDownList.Items [x] का उपयोग न करें। चयनित = सही/गलत ड्रॉपडाउनलिस्ट के चयनित मान को बदलने के लिए। इसके बजाए, ड्रॉपडाउनलिस्ट का चयन करें। चयनित Index = x;

+1

वैकल्पिक रूप से आप 'ddl.Selected = val' का उपयोग कर सकते हैं जो एक आसान विविधता है जिसे मैं पसंद करता हूं। साथ ही, सुनिश्चित करें कि वांछित मूल्य का चयन करने से पहले डेटा आपके 'ड्रॉपडाउनलिस्ट' से जुड़ा हुआ है। यह इस त्रुटि को एक डीडीएल से एक मान चुनने का प्रयास कर सकता है जो अभी तक पॉप्युलेट नहीं है। मैंने इसे सरल 'डीडीएल.इटेम्स। काउंटर < 1 Then' ->' डीडीएल.डेटाइंड() 'के साथ पूरा किया। मुझे यकीन है कि यह आदर्श नहीं है, लेकिन कम से कम यह एक सुविधाजनक त्वरित तय है। :) – Chiramisu

16

मुझे अभी यह समस्या थी, और पता चला कि यह कुछ अलग है। ListItem के अलग उदाहरण जोड़ते पर स्विच किया जा

ddl1.SelectedValue = "1"; //sets the Selected property of item 
ddl2.SelectedValue = "2"; //sets the Selected property of item2 

समस्या तय: क्या मैं बहुत ड्रॉपडाउन के लिए एक ही ListItem उदाहरण जोड़ने था:

ListItem item = new ListItem("Foo", "1"); 
ListItem item2 = new ListItem("Bar", "2"); 
ddl1.Items.Add(item); 
ddl2.Items.Add(item); 
ddl1.Items.Add(item2); 
ddl2.Items.Add(item2); 

फिर SelectedValue की स्थापना।

मेरा अनुमान है कि जब आप DropDownList की SelectedValue निर्धारित करते हैं, यह अपने Items संग्रह में उपयुक्त ListItem पर Selected संपत्ति सेट करता है। तो इस मामले में, दूसरे कोड ब्लॉक के अंत में, दोनों आइटम ड्रॉपडाउन दोनों में चुने जाते हैं।

+0

यह वह परिदृश्य है जो मुझे मिला। मैं ड्रॉपडाइटलिस्ट नियंत्रणों को कम करने के लिए एक ही सूची आईडी जोड़ रहा था। प्रत्येक अद्वितीय ड्रॉपडाउन सूची नियंत्रण के लिए एक अद्वितीय सूची आइटम ऑब्जेक्ट को बांधने के लिए मिला। – paparush

+0

इससे मुझे भी मदद मिली। लव स्टैक ओवरफ्लो ;-) – Sardaukar

+0

धन्यवाद जेफरसन, मैं वही कर रहा था। मुझे इससे मदद मिली। –

0

मुझे एक ही समस्या थी लेकिन थोड़ा अलग परिदृश्य के तहत। मैंने सोचा कि मुझे इसे और संकल्प यहां पोस्ट करना चाहिए क्योंकि इससे किसी को भी समय बचाने में मदद मिल सकती है अगर वे मेरे समान परिदृश्य में हों।

प्रथम त्रुटि संदेश:

AMError: Sys.WebForms.PageRequestManagerServerErrorException: 
Sys.WebForms.PageRequestManagerServerErrorException: 
Cannot have multiple items selected in a DropDownList. 

मेरे परिदृश्य:

मैं आवेदन (एएसपी वीबी नेट) से निकलने के लिए जब मैं समस्या का सामना करना VisualStudio 2010 का उपयोग कर उपयोग कर रहा था। मैंने पृष्ठ पर 2 dropdownlists पर देखा, इंटरनेट की जांच की और किसी भी संकल्प को कई घंटे बर्बाद कर दिया।

समाधान:

तब मैं feedup हो गया और VS 2010 से बाहर निकल गया और एक ब्रेक ले लिया।जब मैं वापस आया। मैं आवेदन वापस चला गया और कोई समस्या नहीं थी। जब मैंने अपनी महंगी गलती का एहसास किया: मैंने एक अभिव्यक्ति स्थापित की है जो SelectedValue को डीबगर घड़ी विंडो में सेट करें! इसलिए बहुतायत!

मैंने अभिव्यक्ति को हटा दिया और सब ठीक से फिर से थे - विजुअल स्टडीजन 2010 dropdownlist अनुभाग को एप्लिकेशन के फोकस के दूसरे क्षेत्र में प्राप्त करने में सक्षम था।

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