1

我有一个标准DataGridView,我的最后一个专栏是DataGridViewComboBoxColumn. 我想添加一个事件,以便当该列中任何行的选定索引发生更改时,会触发一个事件并将该数据保存到 db。

我为此苦苦挣扎了一个小时左右,找不到任何会触发此问题的事件...

任何帮助,将不胜感激!!!

4

2 回答 2

7

在将方法附加到组合框EditingControlShowing事件的情况下。DataGridViewSelectedIndexChanged

例如:

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;
  }
}

现在在下面的方法中,你可以做任何你想做的事情:

private void LastColumnComboSelectionChanged(object sender, EventArgs e)
{
  // Do saving work here
}
于 2011-01-28T10:39:30.543 回答
2

您可以在这些行上尝试一下组合框是一个编辑控件,所以

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);
  }
}

现在在那种情况下你可以做你的事情但是是否需要每次索引更改都需要访问数据库?

于 2011-01-28T10:35:49.093 回答