首页 新闻 搜索 专区 学院

c#的datagridview实时监控问题。

0
悬赏园豆:10 [已解决问题] 解决于 2011-11-22 19:18

项目中遇到实时监控数据库中数据变化,该数据库中的数据只有更新没有新增。当数据库中的数据更新之后就立刻反应到form中的datagridview,但是遇到了问题。开始使用timer控件,数据源使用bindingsource,但是界面很卡。后来使用多线程,但是绘制界面还是使用UI线程,所以界面仍然不流畅。请问大家有什么好的实现方式吗?

另:前段时间有网友回答【用virtual mode+数据绑定,数据源上实现IBindingList,数据源的行上实现INotifyPropertyChanged 】,由于小生是菜鸟所以没看懂。请各位给点意见,最好提供代码。不胜感激

yocho的主页 yocho | 初学一级 | 园豆:177
提问于:2011-11-15 08:39
< >
分享
最佳答案
0

你可能是监控所有的数据了。你只需要监控会发生改变的数据。这个要用到ADO.NET技术。监控的数据少了,速度应该会提高的。

收获园豆:10
悟行 | 专家六级 |园豆:12429 | 2011-11-15 10:21

目前监控的数据不是很多,最多不会超过1000条,是不是哪些地方的实现方式不对啊?

yocho | 园豆:177 (初学一级) | 2011-11-15 17:36

@yocho: 你是监控整个dataset吗?要监控其中你要监控的列。

悟行 | 园豆:12429 (专家六级) | 2011-11-15 17:41

@PursueZhang: 我把dataset直接赋值给datagridview的,怎么监控列啊?有网友这么回答的:【用virtual mode+数据绑定,数据源上实现IBindingList,数据源的行上实现INotifyPropertyChanged 】请问是啥意思啊?

yocho | 园豆:177 (初学一级) | 2011-11-16 08:49

@yocho: 

if (lst != null && lst.Count > 0)
                {
                    //排序。
                    BindingCollection<VIEW_OPR_GoodsInfoVoucherDetails> bc = new BindingCollection<VIEW_OPR_GoodsInfoVoucherDetails>();

                    foreach (var item in lst)
                    {
                        bc.Add(item);
                    }

                    dgv_StatisticeDetail.DataSource = bc;
                }

悟行 | 园豆:12429 (专家六级) | 2011-11-16 09:43

@yocho: 不知道监控列,可以看ADO.Net方面的书籍。里面有个方法可以的。好像是GetChange().

悟行 | 园豆:12429 (专家六级) | 2011-11-16 09:44
其他回答(1)
0

你可以尝试使用服务器推送,这个不会卡

水晶途途 | 园豆:1434 (小虾三级) | 2011-11-15 10:03

能否详细说说怎么推送啊?

支持(0) 反对(0) yocho | 园豆:177 (初学一级) | 2011-11-15 17:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册