How to bind DataGridViewComboBoxColumn to a OnChan

2019-08-14 15:18发布

I have a standard DataGridView, and my last column is a DataGridViewComboBoxColumn. I would like to add an event so that when the selected index of any of the rows in that column changes, an event is triggered and I save that data to db.

I'm struggling with this for an hour or so and couldn't find any event that would trigger this...

Any help would be appreciated!!!

2条回答
小情绪 Triste *
2楼-- · 2019-08-14 15:57

In the EditingControlShowing event of the DataGridView attach a method to the combobox SelectedIndexChanged event.

For example:

private void DGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
  if (DGV.CurrentCell.ColumnIndex == comboColumnIndex && e.Control is ComboBox)
  {
    ComboBox comboBox = e.Control as ComboBox;
    comboBox.SelectedIndexChanged += LastColumnComboSelectionChanged;
  }
}

Now in the below method you can do whatever you want:

private void LastColumnComboSelectionChanged(object sender, EventArgs e)
{
  // Do saving work here
}
查看更多
Summer. ? 凉城
3楼-- · 2019-08-14 16:15

You can try something on these lines The combobox is an editing control, so

private void dg_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
  if (dg.CurrentCell.ColumnIndex == [yourcolumnindex])
  {
    ComboBox cmbox = e.Control as ComboBox;
    cmbox.SelectedValueChanged -= new EventHandler(cmbox_SelectedValueChanged);
    cmbox.SelectedValueChanged += new EventHandler(cmbox_SelectedValueChanged);
  }
}

Now in that event you can do your stuff But is it required that for every index change you would be hitting the database?

查看更多
登录 后发表回答