DataTable上的RejectChanges()将删除DataGridView中的所有行
本文关键字:DataGridView 删除 RejectChanges 上的 DataTable | 更新日期: 2023-09-27 17:58:39
我有一个小问题,找不到解决方案。
我有一个表单,它有一个自定义的dataGridView。此datagridView接收一个数据源。DataSource是我自己创建的Datatable(稍后将被数据库Datatable取代)。到目前为止一切都很好。
现在我的表单中有两个按钮。一个保存,一个取消。我想做的是,当我点击cancell时,我希望对我的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();
}
}
有人知道它为什么会这样吗?
RowState
都是Added
。在最初填充数据表使其成为Unmodified
之后,应该调用AcceptChanges
。
请参阅:https://msdn.microsoft.com/en-us/library/system.data.datarow.rowstate(v=vs.110).aspx