问题
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!!!
回答1:
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
}
回答2:
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?
来源:https://stackoverflow.com/questions/4827182/how-to-bind-datagridviewcomboboxcolumn-to-a-onchange-event-c