0

データベースで基になるデータが更新されたときに、グリッドを自動的に更新しようとしています。これは機能するはずではありませんか?または、何か不足していますか?

DataSet 内に DataTable を作成しました。次に、新しいフォームを作成し、DataGridView を追加しました (実際には、DevExpress の XtraGrid を使用していますが、Microsoft コントロールだけで動作するようにしようとしています)。グリッドの左上にあるメニューを使用して、グリッド データソースをプロジェクト データ ソースのデータテーブルに設定します。これにより、データセット、BindingSource、および TableAdapter がフォームに自動的に追加されます。

次に、BindingSource.ListChanged イベントを追加すると、フォームが読み込まれたときに数回発生しますが、基になるデータが変更されたときは発生しません。

データベース内のデータが変更されたときにイベントを起動する必要がありますか? それとも、現在の VB.NET プロセスのどこかからデータが変更された場合のみですか?

ご協力いただきありがとうございます!

4

3 に答える 3

1

DevExpress XtraGrid の動作についてはよくわかりませんが、ほとんどのリストへのデータバインディングではListChanged、リストがまったく新しい別のリストに置き換えられた場合にのみイベントが発生します。

リストが同じままで、項目が追加された場合、変更されたリストとは見なされません。INotifyCollectionChanged一般に、その場で追加されるアイテムを処理するためのインターフェースを実装するリストを配置する必要があります

于 2012-06-12T03:38:55.203 に答える
1

listchanged イベントは、db のデータが変更されたときではなく、バインドされたオブジェクトが変更されたときにのみ発生します。

sqlclient を使用してデータベースからデータを取得している場合は、SQL 依存関係http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspxを実装できます。

于 2012-06-12T03:42:49.827 に答える
0

このイベントは、基になるリストが変更されたとき、またはリスト内の項目が変更されたときに発生します。データベースが変更されたときではありません。

ここで、Dataset または DataTable はデータベース内のデータから読み込まれますが、読み込まれたものはデータベースとデータセット データの間にライブ接続がありません。データセットを保存/更新または更新する必要がある場合は、関連するメソッドを呼び出してタスクを実行する必要があります。

データを表示する同じ UI からデータを変更する場合は、グリッドの更新メソッドを呼び出して、変更を gridview に反映します。

于 2012-06-12T03:37:23.123 に答える