DataTable上的RejectChanges()删除DataGridView中的所有行

时间:2016-07-25 11:52:35

标签: c# forms datagridview datatable datasource

我有一个小问题,我无法找到解决方案。

我有一个具有自定义dataGridView的表单。 此datagridView接收数据源。 DataSource是我自己创建的数据表(稍后将被Database DataTable替换)。 到目前为止,一切都显得很好。

现在我的表单中有2个按钮。 一个保存,一个保护。 我想要做的是当我点击取消时,我希望对我的datagridView所做的更改回到原来的dataTable。

到目前为止,当我点击按钮时,它只删除所有行(列留下)。

这是我在代码中所做的事例:

public partial class UserControlMyDataGrid : UserControl
{
    private DataTable originalDataTable;

    public UserControlRechercheDataGrid()
    {
        InitializeComponent();

        originalDataTable = new DataTable();
        originalDataTable.Columns.Add("col A", typeof(int));
        originalDataTable.Columns.Add("col B");
        originalDataTable.Columns.Add("col C", typeof(bool));
        originalDataTable.Columns.Add("col D");

        for (int j = 0; j < 5; j++)
        {
            originalDataTable.Rows.Add(j, "c" + j.ToString(), true, "test");
        }

        dataGridView1.DataSource = originalDataTable;
    }

private void buttonCancelModifications_Click(object sender, EventArgs e)
    {
        originalDataTable.RejectChanges();
        dataGridView1.Refresh();
    }

}

任何人都知道为什么会这样做?

1 个答案:

答案 0 :(得分:0)

这是因为所有for i=2:4 all( all(R2(1:i,1:i)) ) end 都是RowState。在最初填充数据表以使其Added之后,您应该致电AcceptChanges

请参阅:https://msdn.microsoft.com/en-us/library/system.data.datarow.rowstate(v=vs.110).aspx