2011-06-10 9 views
8

मेरे पास दो कॉम्बोबॉक्स cb_Brand और cb_Model एक WinForm पर है।कॉम्बोबॉक्स के साफ़ होने के बाद इसका पुराना मान है()

cb_Model ब्रांड चयन पर मूल्यों को पॉप्युलेट करता है। समस्या यह है: यदि हम ब्रांड का चयन करते हैं और उस ब्रांड के तहत किसी भी मॉडल का चयन करते हैं, तो cb_Model चयनित पिछले मॉडल के मान को ढीला नहीं करता है। उदाहरण के लिए : यदि हम ब्रांड ऑडी और मॉडल ए 3 का चयन करते हैं और ब्रांड फोर्ड का चयन करते हैं, तो जब मैं मॉडल का चयन करने के लिए cb_Model पर क्लिक करता हूं, तो यह ए 3 को चयनित मॉडल के रूप में प्रदर्शित करता है, लेकिन फिर भी सूची में अन्य मॉडल फोर्ड से संबंधित होते हैं।

मेरी कोड है:

private void cb_Brand_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // Clear Current Data 
    cb_Model.Text = ""; 
    cb_Model.Items.Clear(); 

    CarModel _carmodel = new CarModel(); 

    // Get Selected Car Brnad 
    int CarBrandID = _carmodel .GetCarBrandID(cb_Brand.Text); 

    //Enable choice of Model 
    SortedList<int, Model> colM; 

    colM = Model.ReadModel(CarBrandID); 

    cb_Model.DisplayMember = "ModelText"; 
    foreach (Model objM in colM.Values) 
    { 
     cb_Model.Items.Add(objM); 
    } 
} 

कोई आइडिया करें .. धन्यवाद


कारण खोजने लेकिन एक अस्थायी ठीक से हल करने में असमर्थ:

private void cb_Model_Click(object sender, EventArgs e) 
{ 
    cb_Model.Text = ""; 
} 

धन्यवाद बहुत सारे लोग चीयर्स

उत्तर

7

इस प्रकार की मैन्युअल रूप से आइटम जोड़ने की:

cb_Model.DataSource = colMValues; 

कौन सूची में डेटा के लिए बाध्य होगा और:

foreach (Model objM in colM.Values) 
{ 
    cb_Model.Items.Add(objM); 
} 

नेट यह तुम्हारे लिए की देखभाल करते हैं और इस के साथ बदलने के चलो डेटा स्रोत सेट होने पर स्वचालित रूप से comboboxes आइटम को रीफ्रेश करता है।

तुम भी अब और इन पंक्तियों की जरूरत नहीं होगी:

// Clear Current Data 
cb_Model.Text = ""; 
cb_Model.Items.Clear(); 

(अन्य डेटा स्रोतों और) बाध्यकारी सूचियों पर अधिक जानकारी के लिए इस का एक पढ़ा है comboboxes रहे हैं:

How to: Bind a Windows Forms ComboBox or ListBox Control to Data (MSDN)

+0

स्मार्ट समाधान, लेकिन मेरे लिए कोई फर्क नहीं पड़ता। असल में केवल तभी पॉप्युलेट होता है जब मैं मॉडल का चयन करने के लिए 'cb_Model' पर क्लिक करता हूं। ऐसा लगता है कि यह स्मृति में कहीं भी मूल्य रखता है। – Scorpion

0

मैं मैंने आपका उदाहरण आजमाया है। मेरे लिए यह काम करना चाहिए जैसा कि यह होना चाहिए। आप cb_model को सेट करने का प्रयास कर सकते हैं। चयनित चयन को "" या चयनित Item को

+0

कोई फर्क नहीं पड़ता, मैं भी आश्चर्यचकित हूं, मेरे पास खोज फ़ॉर्म पर समान नियंत्रण हैं और वे ठीक काम कर रहे हैं ... यह केवल संपादन फ़ॉर्म पर हो रहा है। – Scorpion

+0

क्या आपने यह सुनिश्चित किया है कि मॉडल। रीडमोडेल (कारब्रैंडिड) केवल फोर्ड मॉडल लौटाता है? – maephisto

6

@ w69rdy एक उत्कृष्ट समाधान सुझाता है।

कारण cb_Model ने value को नहीं बदला क्योंकि आपने कभी भी मूल्य नहीं बदला है। cb_Model.Items.Clear() चयनित सूचकांक नहीं बदलता है; केवल कॉम्बो बॉक्स से आइटम हटा दिए जाते हैं।

अपने प्रश्न में प्रदान की कोड नमूना का उपयोग करना:

// Clear Current Data 
cb_Model.Text = ""; 
cb_Model.Items.Clear(); 
cb_Model.SelectedIndex = -1; // would effectively clear the previously selected value. 
+0

मैंने पहले ही 'cb_Model.SelectedIndex = -1;' की कोशिश की है, लेकिन कोई फर्क नहीं पड़ता। – Scorpion

+1

@Scorpion: मेरा मानना ​​है कि एक दूसरा विकल्प 'चयनित Item = null' – IAbstract

+0

@Scorpion सेट करना है: कुछ और है जो मूल्य को समाशोधन से रोक रहा है। यहां कोई भी सुझाव काम करेगा ... जैसा कि माफिस्टो कहता है, यह उसके लिए काम करता है - इसलिए मैं सुझाव दूंगा कि आप कुछ खो रहे हैं;) – IAbstract

3

मैं अब एक ही समस्या थी और Combobox के ResetText विधि मेरे लिए समस्या हल

0

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

0

मैं cmb.resettext यह पाठ को साफ करता है लेकिन, एक ऐसी ही समस्या है की कोशिश की मेरी लोड प्रपत्र value.In नहीं मैं नीचे दिए गए कोड है: Dim cmd As New SqlCommand("SELECT stud_id,name FROM student_details WHERE stud_id NOT IN (SELECT stud_id FROM student_details WHERE hostel_id!=0)", sqlcont.Conn) Dim dr As SqlDataReader = cmd.ExecuteReader Dim dat As New DataTable Dim j As Integer For j = 0 To dat.Rows.Count - 1 dr.Read() Next dat.Load(dr) cmbstud.DisplayMember = "name" cmbstud.ValueMember = "stud_id" cmbstud.DataSource = New BindingSource(dat, Nothing) dr.Close() मेरी btnhostel क्लिक करें घटना में मैं नीचे दिए गए कोड है: frmallocateHostel_Load (कुछ भी नहीं है, कुछ नहीं) यह मैंने अपने डेटासेट को फिर से लोड करने का प्रयास किया और इस प्रकार मेरे comboboxes.ssing cmbstud.resettext बस पाठ को मूल्य को साफ़ नहीं करता है।

0

मैं एक ही समस्या तो है मैं

combobox1.SelectedIndex=-1 

का इस्तेमाल किया और यह काम करता है।

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