2009-08-17 43 views
0

次のような状況があります。フォームが読み込まれ、取得されたデータがDataTableの下にDataGridViewに入力されたときにクエリされるテーブルがDBにあります。データがロードされた後、ユーザーは自由にデータを変更できます(行の追加/削除、エントリの変更)。DataGridView(DataTable)をDBと同期させる

フォームには、ApplyRefreshの2つのボタンがあります。最初の1つはデータベースに変更を送信し、2つ目はDBからデータを再読み込みし、ユーザーが行った変更をすべて消去します。

私の質問は、これはDataGridViewを(ユーザーの視点から)DBと同期させておくための最良の方法ですか?

は今のところこれらは欠点です:

  1. ユーザーは自分が何をしているかを追跡する必要がありますし、
  2. 変更が失われているすべての間、ボタンを押す必要があり、フォームが閉じている場合/アプリのクラッシュ/ ...

私はCellEndEditイベントでDBへの変更を送信しようとしたが、その後、ユーザはまた、いくつかのアンドゥ/リドゥ機能を必要とし、それは...よく...別の話です。

だから、どのような提案ですか?

答えて

1

私は、あなたが現在やっているやり方がうまくいっていると言います。ユーザーがまだ編集中にデータベースを更新しようとすると、ユーザーが最終的に変更したくないものを更新または変更する問題を実行することができます。さらに、データベース呼び出しの数を大幅に増やすことができます。

ユーザーに強制的に適用を適用させると、ユーザーが実際に望む変更のみがデータベースに送信されます。

アプリを適用する前にアプリがクラッシュした場合の変更を失うことについては、アプリがクラッシュする理由をさらに心配しています。

+0

ありがとうございます - これが最良の方法だと思います。 –

0

覚えておくべき唯一の重要なことは、データを保存する前に再フェッチする必要があり、再フェッチされたデータは元々ユーザーに表示されたデータと一致する必要があることです。そうでない場合は、他の誰かが変更を加えたため、ユーザーは知らずに上書きされます。あなたのユーザーはおそらくそれを好まないでしょう。

これをどのように処理するかは、クライアントがデータベースに必要とするものによって異なります。

関連する問題