Code Bye

C# winform gridview 刷新

本人创建了一个winform程序,用gridview来显示的数据参数。数据参数需要实时更新到gridview中,时间间隔是1s,就是每秒要刷新一次gridview中的数据。
表的结构是如下,前面是参数名,后面是参数。参数名是固定的,只需要刷新参数。
参数是从网络上传来的数据。假如本人用一个单元格一个单元格更新的话,时间长了数据就不是实时的了,相当于本人现在更新的是网络上几秒前甚至几分钟前的数据。
下面是其中一个参数块的更新方式:
private void FillCCBZCell( float[] fVal)
{
      int nValIndex = 0;
   
      for (int i = 1; i < 21; i++)
      {
           dataGridViewX1.Rows[i].Cells[1].Value = fVal[nValIndex];
           nValIndex++;
       }
}

用这种方式每秒更新300多个数据,不太靠谱。
有什么办法实时更新吗?

解决方案

15

定义一个datatable,这个datatable的表结构和你这张表一致,
DataTable dt = new DataTable();
dt.Columns.Add(“IP地址”, typeof(string));
dt.Columns.Add(“参数块1”, typeof(string));
dt.Columns.Add(“参数块2”, typeof(string));

然后对dt填充你的数据。
DataRow _row = dt.NewRow();
_row[“参数块1”] = …..
_row[“参数块2”] = …..
dt.Rows.Add(_row);

然后刷新datagridview时候,dataGridView1.DataSource = dt;
即可。

15

300多条数据其实量不大,但是单个刷肯定来不及,
使用gridview绑定数据源,更新数据源就可以;
假如数据量大,可以考虑使用控件的虚拟模式。

15

封装个方法吧,个人觉得300的数据量不大,最蠢的办法就是封装好方法(这个方法要实现查询数据,以及吧查询到的数据绑定到gridview) 封装好了就要用到Timer定时器了,在定时器里面设置时间,多久触发就可以了。这个思路比较简单,LZ可以本人动手试试

15

写个更新服务保持?

15

引用 4 楼 XuePiaoFei1 的回复:

gridview在初始化的时候就是1楼中图片的样子了。假如再add的话,表结构就变了吧。
现在本人的目的是每秒实时更新空着的列,有什么好办法吗

搜下“数据绑定”,文章比较多
数据操作针对后台的DataTable完成,界面只是绑定展示,这样便于维护。
这个界面设计的也够乱的,可以给用户分类显示
通过多个tab或下拉列表来选择

2

可以用监听数据源的方式!

5

引用 10 楼 XuePiaoFei1 的回复:
Quote: 引用 9 楼 xian_wwq 的回复:

搜下“数据绑定”,文章比较多
数据操作针对后台的DataTable完成,界面只是绑定展示,这样便于维护。
这个界面设计的也够乱的,可以给用户分类显示
通过多个tab或下拉列表来选择

多谢回复。整个界面想同时看到,原因是还要有错误报警,假如tab页的话,用户没法看全,他们心里不会安心。
本人先去看看gridview绑定

错误报警建议在form上加报警日志模块,
一旦报警,就在运行日志模块记录下来,保存时间、标签、报警类型等,
同时提供报警信息导出到文件,
方便用户查看、追溯错误。

18

定义一个datatable,这个datatable的表结构和你这张表一致,
DataTable dt = new DataTable();
dt.Columns.Add(“IP地址”, typeof(string));
dt.Columns.Add(“参数块1”, typeof(string));
dt.Columns.Add(“参数块2”, typeof(string));

然后对dt填充你的数据。
DataRow _row = dt.NewRow();
_row[“参数块1”] = …..
_row[“参数块2”] = …..
dt.Rows.Add(_row);

然后刷新datagridview时候,dataGridView1.DataSource = dt;
即可。
=====================
这个方法应该比较靠谱


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# winform gridview 刷新