2012-03-19 13 views
0

DispatcherTimer()を使用して、データが別の場所で更新されるデータベースからリストビューを更新する更新関数を呼び出しています。したがって、リストビューはダッシュボードのように使用されます。WPテーブルビューをdbテーブルの更新として更新します。

private void Update(){ 
     DateTime d = DateTime.Today; 
     items = (from i in DataManager.Entities.signals 
           where i.Date > d 
           orderby i.Id descending 
           select i).Take(MAX_NUM_OF_DISPLAYED); 

     this.lvDashboard.ItemsSource = items;   
    } 

それはデータの一定量に達するまで、それは正常に動作します。私はデータベース内の最後に更新されたデータをクエリし、それをitemssourceに追加できることを知っています。私は自分のコードを簡単かつ明確にしようとしています。アイデアや提案をいただけますか?

----------------更新---

それは1000行のデータを持つすべての1~2秒を更新し、データウィンドウは、最近のデータに動き続けます。プロセスメモリが増え続ける理由。 DataTableはDBの更新を監視していますか? DBが更新された場合、DBはDataTableを更新しますか?

+0

正確に失敗した場合(あなたのリストビューをかなり頻繁に更新していますか)??? – MrClan

+0

シンプルではっきりしていても、しばしば速く一緒にうまく動作しません;)しかし、すべての人々が既に提案しているように。 ItemsSourceをリセットすることは、可能な限り最悪です。データバインディングの力を使い、ObservableCollectionをItemsSourceとして使用し、データをリストに追加し、残りをwpfで処理させます。 – dowhilefor

答えて

0

データのサブセットのみが変更された場合は、ObservableCollectionを作成してアイテムを追加したり削除したりすることは、もっとうまくいくでしょう。そして、再結合しないでください。あなたはDataViewに結合している場合

0

DataTableで行わCommit(データベーステーブルにDataTableポインティングの基礎となる)が自動的にDataViewをリフレッシュうとGUIは、それが表示されます。しかし、あなたのコード以外の何かがテーブルを更新し、それがGUIで更新されているのを見る必要がある場合は、出版社 - 購読者のモデルを検討したいかもしれません。

関連する問題