スキーマのほとんどが設計時に定義されている小さなデータセットがありますが、実行時にそのテーブルの1つにいくつかの列を追加します。私の問題は、これらの変更をリセットするにはどうすればよいですか?
データセットはどのデータソースにもリンクされていません。それは私が「手動で」入力する独自のテーブルを持っているだけです。静的列は、設計時にデータテーブルに追加されています。ただし、カテゴリのリストに基づいて、ランタイムとしていくつかの列を追加します。このような:
For Each aCategory In theCategories
theDataTable.Columns.Add(aCategory.CategoryName, System.Type.GetType("System.Boolean"))
Next
データセットは、アプリケーション内にポップアップ表示される小さなダイアログで使用されます。Loadイベントを使用してダイアログを開いたときに、動的列を追加します。初めてすべてがうまく機能します。ただし、ダイアログを閉じて再度開くと、問題が発生します。スタートアップルーチンが動的列を再度追加しようとしましたが、列がすでに存在するというエラーがスローされます。私は多くのことを試し、いくつかの読書をしましたが、ダイアログが閉じられたときにデータセットをリセットする方法を理解できません。唯一の解決策は、アプリケーション全体を閉じて再度開くことです。ダイアログフォームのLeaveイベントで次のことを試しました。
theDataSet.Reset()
theDataSet.Dispose()
theDataSet.RejectChanges()
これらのどれも違いを生まないようで、エラーは続きます。データセットに加えて、同じメソッドをテーブルに適用してみました。そのような:
theDataSet.Tables(0).Reset()
etc.
フォームが閉じたときにデータセットを完全に消去する方法についてのアイデアはありますか?私はVBで例を挙げましたが、VBまたはC#のいずれかで回答を要約できます。