DataGridViewComboBoxColumn में सेल की कॉम्बोबॉक्स शैली को कैसे बदलें

DataGridViewComboBoxColumn में कक्षों में कॉम्बोबॉक्स स्टाइल ड्रॉपडाउनलिस्ट है। इसका मतलब है कि उपयोगकर्ता केवल ड्रॉपडाउन से मूल्यों का चयन कर सकता है। अंतर्निहित नियंत्रण कॉम्बोबॉक्स है, इसलिए इसमें स्टाइल ड्रॉपडाउन हो सकता है। मैं DataGridViewComboBoxColumn में अंतर्निहित कॉम्बो बॉक्स की शैली कैसे बदलूं। या, अधिक सामान्य, क्या मेरे पास डेटाग्रिड व्यू में ड्रॉपडाउन के साथ एक कॉलम हो सकता है जहां उपयोगकर्ता टाइप कर सकता है?

7

3 उत्तर

void dataGridView1_EditingControlShowing(object sender, 
    DataGridViewEditingControlShowingEventArgs e)
{
    if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
    {
        DataGridViewComboBoxEditingControl cbo = 
            e.Control as DataGridViewComboBoxEditingControl;
        cbo.DropDownStyle = ComboBoxStyle.DropDown;
    }
}

Problem with combobox and databound datagridview

4
जोड़ा
यह समाधान का एकमात्र विचार है। पूर्ण समाधान के लिए सत्यापन दिनचर्या की आवश्यकता होती है, अन्यथा DataGridView अपवाद फेंक देगा। उपयोगी समाधान को अक्सर ड्रॉपडाउन में सेल विशिष्ट सूची की आवश्यकता होती है।
जोड़ा लेखक chgman, स्रोत

निम्नलिखित समाधान मेरे लिए काम करता है

private void dataGridView1_CellValidating(object sender, 
    DataGridViewCellValidatingEventArgs e) 
{
    if (e.ColumnIndex == Column1.Index) 
    {
       //Add the value to column's Items to pass validation
        if (!Column1.Items.Contains(e.FormattedValue.ToString())) 
        {
            Column1.Items.Add(e.FormattedValue);
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 
                e.FormattedValue;
        }
    }
}

private void dataGridView1_EditingControlShowing(object sender, 
    DataGridViewEditingControlShowingEventArgs e) 
{
    if (dataGridView1.CurrentCell.ColumnIndex == Column1.Index) 
    {
        ComboBox cb = (ComboBox)e.Control;
        if (cb != null) 
        {
            cb.Items.Clear();
           //Customize content of the dropdown list
            cb.Items.AddRange(appropriateCollectionOfStrings);
            cb.DropDownStyle = ComboBoxStyle.DropDown;
        }
    }
}
2
जोड़ा
दी गई स्थिति अगर मेरे डेटाबेस को हमेशा मेरे डेटाबेस में सच साबित हो जाती है ... क्या कोई काम है ... दिया गया शर्त: ====================== ====================================== और zwnj; ======= अगर ( Column1.Items.Contains (e.FormattedValue.ToString ())) {Column1.Items.Add (e.FormattedValue) जोड़ें; डेटाग्रिड व्यू 1। पंक्तियां [ई। रोइंडेक्स] .ल्स [ई। कॉलम इंडेक्स]। वैल्यू = ई। फोर्मेटेड वैल्यू; }
जोड़ा लेखक Asad Malik, स्रोत
if (!Column1.Items.Contains(e.FormattedValue.ToString())) { 
    Column1.Items.Add(e.FormattedValue);     
    dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue; 
}  

हमेशा सच हो सकता है क्योंकि Column1.Items.Contains() स्ट्रिंग मानों की खोज कर रहा है। यदि e.FormattedValue एक स्ट्रिंग नहीं है तो तुलना विफल हो जाएगी।

प्रयत्न

if (!Column1.Items.Contains(e.FormattedValue.ToString())) { 
    Column1.Items.Add(e.FormattedValue.ToString());     
    dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue.ToString(); 
}

या

if (!Column1.Items.Contains(e.FormattedValue)) { 
    Column1.Items.Add(e.FormattedValue); 
    dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue; 
}
1
जोड़ा