2010-11-19 14 views
7

मुझे विजुअलस्टूडियो 2010 सी # विनफॉर्म के साथ कुछ परेशानी हो रही है।DataGridViewComboBox - किसी भी मूल्य की अनुमति कैसे दें?

मैंने डेटाग्रिड व्यू को एक अनबाउंड कॉलम के साथ बनाया है जो डेटाग्रिड व्यूबोम्बोबॉक्स कॉलम प्रकार है। कॉलम ठीक काम करता है, सामान्य कॉम्बोबॉक्स के विपरीत, मैं किसी भी मूल्य में टाइप नहीं कर सकता। मुझे सूची से मूल्य लेने के लिए मजबूर किया गया है।

क्या कोई ऐसी संपत्ति है जिसे मुझे सेट करने की ज़रूरत है या कोई अन्य प्रकार जिसका उपयोग मैं कर सकता हूं जिससे मुझे मूल्य चुनने के लिए सूची प्रदान करने के अलावा सेल में कोई भी मूल्य दर्ज करने की अनुमति मिल जाएगी?

धन्यवाद!

उत्तर

10

मुझे नहीं लगता कि एक संपत्ति है कि इस अनुमति देगा है, लेकिन मैंने पाया एक जवाब here है कि एक छोटा सा संशोधन के साथ काम किया ।

कोशिश निम्नलिखित 2 ईवेंट हैंडलर्स जोड़ने, यहाँ यह सोचते हैं एक स्तंभ comboBoxColumn नामित:

private void dataGridView1_EditingControlShowing(object sender, 
     DataGridViewEditingControlShowingEventArgs e) 
{ 
    ComboBox c = e.Control as ComboBox; 
    if (c != null) c.DropDownStyle = ComboBoxStyle.DropDown; 
} 

private void dataGridView1_CellValidating(object sender, 
     DataGridViewCellValidatingEventArgs e) 
{ 
    if (e.ColumnIndex == comboBoxColumn.Index) 
    { 
     object eFV = e.FormattedValue; 
     if (!comboBoxColumn.Items.Contains(eFV)) 
     { 
      comboBoxColumn.Items.Add(eFV); 
      dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = eFV; 
     } 
    } 
} 
+0

बिल्कुल सही! धन्यवाद! –

0

DataGridViewComboBoxColumn को संभव मूल्यों से चुनने के लिए डिज़ाइन किया गया है - डेटा टाइप करने के लिए नहीं। आप किसी भी डेटा जोड़ना चाहते हैं, तो आप यह वांछित DataGridViewComboBoxCell के लिए प्रोग्राम के रूप में करना चाहिए:

((DataGridViewComboBoxCell)dataGridView1[0,0]).Items.AddRange(new string [] {"A","B","C"}); 
संबंधित मुद्दे