我正在使用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会自行更新吗?
答案 0 :(得分:0)
这将是更多的工作,但如果只有一部分数据发生变化,那么将项目设为ObservableCollection并添加和删除项目。不要重新绑定。
答案 1 :(得分:0)
如果您绑定到DataView
(基础DataTable
指向数据库表),Commit
上的DataTable
将自动刷新DataView
, GUI将显示它。但是当你的代码以外的东西更新表时你需要在GUI上看到它更新,为此你可能想要考虑一些发布者 - 订阅者模型。