0

C#でDataTableをクリアしようとすると大きな問題が発生します。

データベース内の情報を編集するときの他のすべての時点で、私は次のようなものを使用しました

somethingTableTableAdapter1.Update(greenParksDataSet);  
greenParksDataSet1.AcceptChanges();

これは問題なく機能しました。ただし、私のフォームの1つに、開いているテーブルをクリアするためのボタンがあります。メモリ内の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);その後に追加すると、データベースがまったく変更されていないことが示されます。

私はおそらく明らかな何かを見逃しているでしょうが、私はこれについて何年もの間困惑してきました、そしてどんな助けもいただければ幸いです。ありがとう!

4

2 に答える 2

0

この質問/回答をご覧ください。

Clearは、メモリ内のデータテーブルで機能するだけで、削除のフラグは立てません。

于 2012-04-22T18:33:07.340 に答える
0

バインディングソースを使用していると思うので、これを試してください:

greenParksDataSet.HistoryTable.Rows.Clear();
HistoryTableBindingSource.EndEdit();

historyTableTableAdapter.Update(greenParksDataSet);
greenParksDataSet.AcceptChanges();
于 2012-04-22T18:40:41.057 に答える