我在尝试使用C#清除DataTable时遇到了重大问题。
在编辑数据库中的信息的所有其他时刻,我使用了类似
的内容somethingTableTableAdapter1.Update(greenParksDataSet);
greenParksDataSet1.AcceptChanges();
这个工作得很好。但是,在我的一个表单中,我有一个按钮来清除打开的表格。它似乎清除了内存中的DataTable,但实际上没有将更改传播到数据库。基本上代码归结为
greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = -1;
greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = -1;
greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = 1;
greenParksDataSet.HistoryTable.RecieptIDColumn.AutoIncrementSeed = 1;
greenParksDataSet.HistoryTable.Rows.Clear();
historyTableTableAdapter.Update(greenParksDataSet);
greenParksDataSet.AcceptChanges();
我已经尝试过处理事情的顺序,但似乎没有任何工作。使用该代码,DataTable将被清除(并且更改将显示在DataGridView中),但在此之后添加historyTableTableAdapter.Fill(greenParksDataSet.HistoryTable);
时,会显示数据库未进行任何更改。
我可能已经错过了一些明显的东西,但是我已经困惑了很多年了,任何帮助都会受到赞赏。谢谢!
答案 0 :(得分:0)
Clear只对内存中的数据表起作用 - 它不会将它们标记为删除。
答案 1 :(得分:0)
我认为你正在使用绑定源,所以试试这个:
greenParksDataSet.HistoryTable.Rows.Clear();
HistoryTableBindingSource.EndEdit();
historyTableTableAdapter.Update(greenParksDataSet);
greenParksDataSet.AcceptChanges();