5

I am trying to enter values in a datagridview Combobox. but it does not Allows. What to do?

Even
  • 391
  • 3
  • 8
  • 17

3 Answers3

8
private void GridStockItemEntry_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {

        DataGridViewRow row = GridStockItemEntry.CurrentRow;
        DataGridViewCell cell = GridStockItemEntry.CurrentCell;
        if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
        {

            if (cell == row.Cells["ItemName"] && Convert.ToString(row.Cells["Type"].Value) == "Raw Material")
            {
                DataGridViewComboBoxEditingControl cbo = e.Control as DataGridViewComboBoxEditingControl;

                cbo.DropDownStyle = ComboBoxStyle.DropDown;

                cbo.Validating += new CancelEventHandler(cbo_Validating);
            }
        }


    }
    void cbo_Validating(object sender, CancelEventArgs e)
    {

        DataGridViewComboBoxEditingControl cbo = sender as DataGridViewComboBoxEditingControl;

        DataGridView grid = cbo.EditingControlDataGridView;

        object value = cbo.Text;

        // Add value to list if not there

        if (cbo.Items.IndexOf(value) == -1)
        {

            DataGridViewComboBoxCell cboCol = (DataGridViewComboBoxCell)grid.CurrentCell;

            // Must add to both the current combobox as well as the template, to avoid duplicate entries...

            cbo.Items.Add(value);

            cboCol.Items.Add(value);

            grid.CurrentCell.Value = value;

        }

    }
HodlDwon
  • 1,131
  • 1
  • 13
  • 30
Even
  • 391
  • 3
  • 8
  • 17
  • cbo_validating() is called continuously even when i am setting e.cancel as true. is there any specific reason? – gulshanm01 Apr 03 '14 at 12:59
5

Maybe, this example is better readable:

private void datagridview_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) {
        DataGridView dgv = (DataGridView)sender;
        if(dgv.CurrentCell.ColumnIndex==dgv.Columns["ColumnName"].Index) {
            ComboBox cbx = (ComboBox)e.Control;
            cbx.DropDownStyle = ComboBoxStyle.DropDown;
            cbx.AutoCompleteSource = AutoCompleteSource.ListItems;
            cbx.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
        }
    }
termigrator
  • 159
  • 3
  • 11
-2

Make sure that EditMode property of the DataGridView is set to EditOnKeystrokeOrF2

Also, verify that ReadOnly property is set to False.

Chris Ballard
  • 3,771
  • 4
  • 28
  • 40
tzup
  • 3,566
  • 3
  • 26
  • 34