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!!!
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
}
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?