2012-02-22 15 views
6

मैं डेटाग्रिड के क्लिक ईवेंट पर comboBox के चयनित आइटम को सेट करने का प्रयास कर रहा हूं, लेकिन मैं नहीं कर सका। मैंने गुमराह किया है और बिना किसी सफलता के विभिन्न तरीकों की कोशिश की है।सी # विंडोज फॉर्म में कॉम्बोबॉक्स के चयनित आइटम को कैसे सेट करें?

मेरे लिए SelectedIndex काम कर रहा है, लेकिन मैं ComboBox में मदों की सूचकांक नहीं पा सके, तो मैं आइटम का चयन नहीं कर सका।

नहीं काम कर कोड:

for (int i = 0; i < cmbVendor.Items.Count; i++) 

    if (cmbVendor.Items[i].ToString() == Convert.ToString(gridView1.GetFocusedRowCellValue("vVendor"))) 
    { 
     cmbVendor.SelectedIndex = i; 
     break; 
    } 
+0

आप आइटम आपके द्वारा चुने चाहते हैं .text/.Value (याद नहीं कर सकते जो एक ComboBox का उपयोग करता है) की स्थापना की कोशिश की है: यहाँ एक उदाहरण है? –

+0

क्या आपका IF कथन निष्पादित नहीं होता है? – Tigran

+0

कॉम्बो डेटासोर्स को भरने के लिए एक आईडी, मान (कोई प्राथमिक कुंजी) वाली कक्षा की एक सूची का उपयोग करें, फिर चयनित मूल्य का उपयोग करें: cmbVendor.SelectedValue –

उत्तर

12

आप .Items.IndexOf() विधि द्वारा अपने मद सूचकांक मिल सकती है। इसे आज़माएं:

comboBox1.SelectedIndex = comboBox1.Items.IndexOf(gridView1.GetFocusedRowCellValue("vVendor")); 

आपको फिर से प्रयास करने की आवश्यकता नहीं है।

आप स्टैक ओवरफ़्लो प्रश्न How do I set the selected item in a comboBox to match my string using C#? में अधिक जानकारी प्राप्त कर सकते हैं।

+0

खेद नहीं है ... indexOf रिटर्न -1 यहां तक ​​कि ग्रिडव्यू वर्तमान स्ट्रिंग – Azhar

+0

प्रदान करता है तो इसमें कुछ गड़बड़ है: gridView1.GetFocusedRowCellValue ("vVendor")। – Kamil

4

आप में यह राशि अपने यदि:

cmbVendor.SelectedItem = cmbVendor.Items[i]; 
+1

लूप के लिए और अधिक आवश्यकता नहीं है, सीधे सेट करें। चयनित Item 'कनवर्ट करें। ToString (gridView1.GetFocusedRowCellValue ("vVendor"))' मुझे लगता है। –

+0

खेद नहीं है ... असल में यह सच नहीं है कि अगर कथन – Azhar

1

मानते हैं कि gridView1.GetFocusedRowCellValue("vVendor") वास्तव में अपेक्षित काम करता है, निम्न कोड समस्या को ठीक करना चाहिए।

string selected = Convert.ToString(gridView1.GetFocusedRowCellValue("vVendor")); 
foreach (var item in cmbVendor.Items) 
{ 
    if (string.Compare(item.ToString(), selected, StringComparison.OrdinalIgnoreCase) == 0) 
    { 
     cmbVendor.SelectedItem = item; 
     break; 
    } 
} 

मूल कोड, gridView1.GetFocusedRowCellValue("vVendor") को कई कॉल किया था, जबकि आप केवल एक की जरूरत है।

सुझाव दिया "comboBox1.Items.IndexOf (" मान लिया गया cmbVendor.Items की सामग्री के बारे में बहुत ज्यादा

2

अंत में मैं यह पता चला यह है:।।

cmbVendor.Text = Convert.ToString(gridView1.GetFocusedRowCellValue("vVendor")); 

SelectedText संपत्ति को चुन के लिए है कॉम्बो बॉक्स का पाठ बॉक्स भाग में संपादन योग्य पाठ का कोई भाग।

11

निम्नलिखित पूरी तरह से मेरे लिए काम कर रहा है। किसी भी मूल्य या पाठ जो बता गया में उपलब्ध है दर्रा।

comboBox1.SelectedIndex = comboBox1.FindString(<combobox value OR Text in string formate>); 
0

मुझे एक ही समस्या थी और इसे अन्य उत्तरों की सहायता से आंशिक रूप से काम किया। सबसे पहले, मेरी विशेष समस्या यह है कि

combobox1.SelectedItem = myItem; 

अपेक्षा के अनुरूप काम नहीं कर रहा था। मूल कारण यह था कि MyItem एक समूह से एक वस्तु थी जो प्रभावी रूप से combobox में आइटम के समान सूची थी, लेकिन यह वास्तव में उन वस्तुओं की एक प्रति थी। तो myItem एक मान्य प्रविष्टि के समान था, लेकिन खुद combobox1 कंटेनर से एक मान्य वस्तु नहीं थी।

समाधान SelectedItem के बजाय SelectedIndex उपयोग करने के लिए, इस तरह था:

combobox1.SelectedIndex = get_combobox_index(myItem); 

जहां

private int get_combobox_index(ItemClass myItem) 
    { 
     int i = 0; 
     var lst = combobox1.Items.Cast<ItemClass >(); 
     foreach (var s in lst) 
     { 
      if (s.Id == myItem.Id) 
       return i; 

      i++; 
     } 
     return 0; 
    } 
-1

यह मेरे लिए काम करता है .....

string displayMember = ComboBox.DataSource.To<DataTable>().Select("valueMemberColumn = '" + value + "'")[0]["displayMember"].ToString(); 
ComboBox.FindItemExact(displayMember, true).Selected = true; 
+0

क्या कोई मुझे बता सकता है कि मेरा जवाब वोट क्यों कम हो जाता है? –

0

आप ComboBox नियंत्रण के लिए ValueMember संपत्ति की स्थापना की है, तो आप बस ComboBox नियंत्रण के SelectedValue संपत्ति के मूल्य assingn कर सकते हैं। आपको सूचकांक को स्पष्ट रूप से नहीं ढूंढना है।

public class Vendor{ 
    public int VendorId {get; set;} 
    public string VendorName {get; set;} 
} 

// Inside your function 
    var comboboxData = new List<Vendor>(){ 
     new Vendor(){ vendorId = 1, vendorName = "Vendor1" }, 
     new Vendor(){ vendorId = 2, vendorName = "Vendor2" } 
    } 

    cmbVendor.DataSource = comboboxData; 
    cmbVendor.DisplayMember = "VendorName"; 
    cmbVendor.ValueMember = "ValueId"; 

// Now, to change your selected index to the ComboBox item with ValueId of 2, you can simply do: 
    cmbVendor.SelectedValue = 2; 
संबंधित मुद्दे