现在的做法是,用timer定时去读取,并用dgvTable.DataSource = dt;重新绑定,
但是这样做,数据量大的时候刷新闪动的太历害了,有没有更好的办法?
12 个解决方案
#1
性能与速度的平衡
#2
直接设置单元格的值
通过循环,比较当前单元格的值是否有改变,如果改变了,进行修改
不通过绑定方式进行,因为绑定会全部刷新
通过循环,比较当前单元格的值是否有改变,如果改变了,进行修改
不通过绑定方式进行,因为绑定会全部刷新
#3
每秒都去读取和重新绑定,这样的操作效率很低,
建议 只有在数据源表中数据有变更时再重新绑定数据源。
可以在表中添加个字段 来判断该记录是否有变更。
建议 只有在数据源表中数据有变更时再重新绑定数据源。
可以在表中添加个字段 来判断该记录是否有变更。
#4
楼上的建议,我也考虑过,但是数据库提数据是实时变更的,基本上每秒的数据都不一样
#5
给数据库中需要绑定的数据加上触发器,有值改变则进行刷新
#6
up
#7
不要重新绑定数据源,直接对数据源进行操作
建议这样做,你再见一张表,做日志使用,所有insert,update,delete操作,都记录日志,你刷新的时候,根据日志去取数,比如,读取日志的时候,发现日志中有两条insert的操作,把这两个insert对应的记录找出来,读取到客户端,然后Merge到你原有的结果集中,如果是update操作,找出Update对应的记录,客户端的结果集中将那些记录替换,如果是delete,则将所有delete掉的记录的记录号等等找到,然后在客户端将对应的记录删除就好了。
建议这样做,你再见一张表,做日志使用,所有insert,update,delete操作,都记录日志,你刷新的时候,根据日志去取数,比如,读取日志的时候,发现日志中有两条insert的操作,把这两个insert对应的记录找出来,读取到客户端,然后Merge到你原有的结果集中,如果是update操作,找出Update对应的记录,客户端的结果集中将那些记录替换,如果是delete,则将所有delete掉的记录的记录号等等找到,然后在客户端将对应的记录删除就好了。
#8
唉,都不是个办法。关键是时间太短了。
#9
每次去数据库读取数据的时候,只取自上次读取以来,有修改的或新增的数据。
读取回来之后,merge到 dgvTable.DataSource 。这样DataGrid就更新显示了。
#10
谢谢楼上各位的回答
还有没有更好的办法,因为是读取传感器返回的数据,所以基本上每秒数据都不一样
如果现在就假设每秒数据都不一样,有没有更好的办法
还有没有更好的办法,因为是读取传感器返回的数据,所以基本上每秒数据都不一样
如果现在就假设每秒数据都不一样,有没有更好的办法
#11
关注。。。。。
#12
分页
#1
性能与速度的平衡
#2
直接设置单元格的值
通过循环,比较当前单元格的值是否有改变,如果改变了,进行修改
不通过绑定方式进行,因为绑定会全部刷新
通过循环,比较当前单元格的值是否有改变,如果改变了,进行修改
不通过绑定方式进行,因为绑定会全部刷新
#3
每秒都去读取和重新绑定,这样的操作效率很低,
建议 只有在数据源表中数据有变更时再重新绑定数据源。
可以在表中添加个字段 来判断该记录是否有变更。
建议 只有在数据源表中数据有变更时再重新绑定数据源。
可以在表中添加个字段 来判断该记录是否有变更。
#4
楼上的建议,我也考虑过,但是数据库提数据是实时变更的,基本上每秒的数据都不一样
#5
给数据库中需要绑定的数据加上触发器,有值改变则进行刷新
#6
up
#7
不要重新绑定数据源,直接对数据源进行操作
建议这样做,你再见一张表,做日志使用,所有insert,update,delete操作,都记录日志,你刷新的时候,根据日志去取数,比如,读取日志的时候,发现日志中有两条insert的操作,把这两个insert对应的记录找出来,读取到客户端,然后Merge到你原有的结果集中,如果是update操作,找出Update对应的记录,客户端的结果集中将那些记录替换,如果是delete,则将所有delete掉的记录的记录号等等找到,然后在客户端将对应的记录删除就好了。
建议这样做,你再见一张表,做日志使用,所有insert,update,delete操作,都记录日志,你刷新的时候,根据日志去取数,比如,读取日志的时候,发现日志中有两条insert的操作,把这两个insert对应的记录找出来,读取到客户端,然后Merge到你原有的结果集中,如果是update操作,找出Update对应的记录,客户端的结果集中将那些记录替换,如果是delete,则将所有delete掉的记录的记录号等等找到,然后在客户端将对应的记录删除就好了。
#8
唉,都不是个办法。关键是时间太短了。
#9
每次去数据库读取数据的时候,只取自上次读取以来,有修改的或新增的数据。
读取回来之后,merge到 dgvTable.DataSource 。这样DataGrid就更新显示了。
#10
谢谢楼上各位的回答
还有没有更好的办法,因为是读取传感器返回的数据,所以基本上每秒数据都不一样
如果现在就假设每秒数据都不一样,有没有更好的办法
还有没有更好的办法,因为是读取传感器返回的数据,所以基本上每秒数据都不一样
如果现在就假设每秒数据都不一样,有没有更好的办法
#11
关注。。。。。
#12
分页