将WPF Listview更新为db表更新

时间:2012-03-19 11:14:22

标签: c# wpf listview itemssource dispatchertimer

我正在使用DispatcherTimer()调用update函数来更新数据库中的listview,其中数据在其他地方更新。因此,listview用作仪表板。

    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秒更新1000行数据,数据窗口继续移动到最近的数据。进程内存不断增长的一些原因。 DataTable是否监控数据库更新?如果DB在其他地方更新,DB绑定DataTable会自行更新吗?

2 个答案:

答案 0 :(得分:0)

这将是更多的工作,但如果只有一部分数据发生变化,那么将项目设为ObservableCollection并添加和删除项目。不要重新绑定。

答案 1 :(得分:0)

如果您绑定到DataView(基础DataTable指向数据库表),Commit上的DataTable将自动刷新DataView, GUI将显示它。但是当你的代码以外的东西更新表时你需要在GUI上看到它更新,为此你可能想要考虑一些发布者 - 订阅者模型。