DataGridView在行更改时保存更改

时间:2013-02-11 23:46:37

标签: c# winforms datagridview

我试图在将行留在DataGridView后保存记录。

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

我已经尝试直接在数据表上使用RowChanged事件,这确实可行。

我最终使用RowValidation事件并从数据表(GetChange()))获取更改,但这似乎不太明白。

除了删除之外,我使用了UserDeletingRow事件,但这似乎不太明白。

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

2 个答案:

答案 0 :(得分: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;
    }
}

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

答案 1 :(得分:3)

您是否尝试过DataGridView.RowValidating Event.IsCurrentRowDirty

    private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
    {
        if (dataGridView1.IsCurrentRowDirty)
        {
           //Do stuff
        }
    }