DataGridView在行更改时保存更改

use*_*911 7 c# datagridview winforms

我试图在一行中留下一行后保存一条记录DataGridView.

我已经看到解决方案使用该RowValidated事件,但是,当行被排序时,记录将在RowValidation事件被触发之前被使用.我还尝试使用BindingSourceCurrent属性获取行,但当前属性已更改.同样适用于RowLeaving我相信.

我已经尝试RowChanged直接在数据表上使用该事件,这确实有效.

我最终使用了这个RowValidation事件并从数据表中获取了更改(GetChange())但这似乎并不合适.

除了删除我使用的UserDeletingRow事件,但这似乎不是想法.

离开行后保存记录的最佳方法是什么?

spa*_*jce 5

你尝试过DataGridView.RowValidating Event.IsCurrentRowDirty吗?

    private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
    {
        if (dataGridView1.IsCurrentRowDirty)
        {
           //Do stuff
        }
    }
Run Code Online (Sandbox Code Playgroud)


Chr*_*nce 3

你看过了吗.RowLeave

private void dataGridView1_RowEnter(object sender, 
    DataGridViewCellEventArgs e)
{
    for (int i = 0; i < dataGridView1.Rows[e.RowIndex].Cells.Count; i++)
    {
        dataGridView1[i, e.RowIndex].Style.BackColor = Color.Yellow;
    }
}

private void dataGridView1_RowLeave(object sender, 
    DataGridViewCellEventArgs e)
{
    for (int i = 0; i < dataGridView1.Rows[e.RowIndex].Cells.Count; i++)
    {
        dataGridView1[i, e.RowIndex].Style.BackColor = Color.Empty;
    }
}
Run Code Online (Sandbox Code Playgroud)

来源:http ://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowleave.aspx

  • 似乎不包含“RowLeave”期间的更改。 (2认同)