DataTable 上的 RejectChanges() 删除 DataGridView 中的所有行
RejectChanges() on DataTable removes all rows in DataGridView
我有一个小问题,我找不到解决方案。
我有一个带有自定义 dataGridView 的表单。
此 datagridView 接受数据源。
DataSource 是我自己创建的数据表(稍后将由数据库数据表替换)。
目前一切正常。
现在我的表单中有 2 个按钮。
一个保存,一个取消。
我想要做的是当我单击取消时,我希望对我的 datagridView 所做的更改返回到其原始数据表。
到目前为止,当我点击按钮时,它只会删除所有行(保留列)。
这是我在代码中所做的一个例子:
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();
}
}
有人知道它为什么会这样吗?
因为 RowState
都是 Added
。您应该在最初填充数据 table 后调用 AcceptChanges
以使它们 Unmodified
.
参见:https://msdn.microsoft.com/en-us/library/system.data.datarow.rowstate(v=vs.110).aspx
我有一个小问题,我找不到解决方案。
我有一个带有自定义 dataGridView 的表单。 此 datagridView 接受数据源。 DataSource 是我自己创建的数据表(稍后将由数据库数据表替换)。 目前一切正常。
现在我的表单中有 2 个按钮。 一个保存,一个取消。 我想要做的是当我单击取消时,我希望对我的 datagridView 所做的更改返回到其原始数据表。
到目前为止,当我点击按钮时,它只会删除所有行(保留列)。
这是我在代码中所做的一个例子:
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();
}
}
有人知道它为什么会这样吗?
因为 RowState
都是 Added
。您应该在最初填充数据 table 后调用 AcceptChanges
以使它们 Unmodified
.
参见:https://msdn.microsoft.com/en-us/library/system.data.datarow.rowstate(v=vs.110).aspx