2011-09-27 15 views
5

मैं comboBox में मौजूद सभी आइटमों के प्रदर्शित मूल्यों को पुनर्प्राप्त करने का प्रयास कर रहा हूं।कॉम्बोबॉक्स प्रदर्शित मूल्यों को पुनर्प्राप्त करें

पहला मामला: अगर बता गया का उपयोग कर भरा कर दिया गया है एक DataSource:

foreach (DataRowView rowView in comboBox.Items) { 
    String value = rowView.Row.ItemArray[1].ToString(); 
    // 1 corresponds to the displayed members 
    // Do something with value 
} 

दूसरा मामला:

comboBox.DataSource = myDataSet.Tables[0]; 
comboBox.DisplayMember = "value"; 
comboBox.ValueMember = "id"; 

... मैं इस कोड का उपयोग करता है, तो बता गया है comboBox.Items.Add("blah blah") से भरा हुआ है, मैं उसी कोड का उपयोग करता हूं, सिवाय इसके कि मुझे ItemArray के पहले आयाम को देखना है:

foreach (DataRowView rowView in comboBox.Items) { 
    String value = rowView.Row.ItemArray[0].ToString(); 
    // 0 corresponds to the displayed members 
    // Do something with value 
} 

अब मैं कॉम्बोबॉक्स भरने के लिए उपयोग की जाने वाली योजना को जानने के बिना सभी मूल्यों को पुनर्प्राप्त करने में सक्षम होना चाहता हूं। इस प्रकार, मुझे नहीं पता कि मुझे ItemArray[0] या ItemArray[1] का उपयोग करना है या नहीं। क्या यह संभव है? ऐसा कैसे किया जा सकता था?

+0

मुझे तुम्हारी जरूरत है 'comboBox1.SelectedText' या' comboBox1.SelectedValue' – V4Vendetta

+1

@ V4Vendetta लगता है: मैं _selected_ आइटम प्राप्त करने की कोशिश नहीं कर रहा हूँ, लेकिन लूप करने के लिए _सभी आइटम। – Otiel

उत्तर

4

आप कुछ इस तरह की कोशिश कर सकते हैं:

 string displayedText; 
     DataRowView drw = null; 

     foreach (var item in comboBox1.Items) 
     { 
      drw = item as DataRowView; 
      displayedText = null; 

      if (drw != null) 
      { 
       displayedText = drw[comboBox1.DisplayMember].ToString(); 
      } 
      else if (item is string) 
      { 
       displayedText = item.ToString(); 
      } 
     } 
+0

मेरे पास 'var' कीवर्ड का उपयोग करने के लिए वृत्ति नहीं है। धन्यवाद :) – Otiel

1

लिटो, आप यह देखने के लिए जांच सकते हैं कि डेटासोर्स डेटाटेबल है या नहीं, यह निर्धारित करने के लिए कि कौन सी कार्रवाई करना है।

if (comboBox.DataSource is DataTable) 
{ 
    // do something with ItemArray[1] 
} 
else 
{ 
    // do something with ItemArray[0] 
} 
2

Combobox पहले मामले में DataSource संपत्ति के साथ से भरे जाएंगे। इसलिए इसकी DataSource शून्य नहीं होगी। दूसरे मामले में, यह शून्य होगा। तो आप (comboBox1.DataSource==null) के साथ एक और कर सकते हैं और उसके बाद ItemArray[0] या ItemArray[1] का उपयोग करें।

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