0


我有一个 VisualStudio 生成的数据集。
我将它们连接到 DataGridView(由 VisualStudio 连接的宽度)。
我正在使用过滤器。例如:
xyBindingSource.Filter = "yx = 'tart'";

我的问题:
如果我更改 yx 列的任何值(从 tart 更改为其他任何值),更改的行将在 CellEndEdit 事件运行之前删除。
在 CellEndEdit 事件中,DataGridViewCellEventArgs 将包含正确的行号和列号。
但是事件 args 所指向的行并不是被编辑的,因为选择的行被更早地删除了。

我能做些什么?

感谢帮助:
诺比

4

1 回答 1

0

您可以使用DataGridView.CurrentCellDirtyStateChanged事件来处理这个问题。DataGridView.CellValueChanged如果您这样做,这可以引发事件:

void dataGridView1_CurrentCellDirtyStateChanged(object sender,
    EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

CommitEdit手动引发DataGridView.CellValueChanged事件。您可以Filter再次在此事件中重新加载您的方法。试试看。

于 2012-08-31T08:23:10.230 回答