WinForm DataGridView实时更新表格数据

前言

一个特殊的项目没有用第三方控件库,但用到了DataGridView,由于是客户端产生的数据,所以原始数据源就是一个集合。

根据需要会向集合中添加数据项,或是修改某些数据项的值,但DataGridView并没有提供像RefreshDataSource类似接口。

以为有很简单的解决办法[是的,我指的就是个函数调用],找了一会儿却发现都挺麻烦的样子。最后采用了自己熟悉的做法。

DataGridView绑定数据源:

List<T> source = new List<T>();

DataGridView1.DataSource = new BindingSource { DataSource = source };

解决方法一

[Added201907092253,此方法不太适合于集合作为数据源,需要进一步转换,但切合标题所以写在这儿了]

把数据项T类中的属性作为DataColumn加到DataTable中,然后将DataTable作为表格数据源即可:DataGridView1.DataSource=dataTable;

集合source中的每个T实例就是DataTable中的一行数据。以法二中的Character为例简单在下面写一下代码(现打有错请见谅):

System.Data.DataTable dt = new DataTable("tableName");

dt.Columns.Add(new DataColumn { ColumnName= "Name" });   // 列名按需,表格中列标题好像显示的是列名

dt.Columns.Add(new DataColumn { ColumnName= "年龄" }); 

dt.Columns.Add(new DataColumn { ColumnName= "Gender" }); 

dt.Columns.Add(new DataColumn { ColumnName= "Stature" }); 

DataGridView1.DataSource = dt;

// 添加数据

DataRow dr = dt.NewRow();

dr["年龄"] = 27;

dt.Rows.Add(dr);

dt.AcceptChanges();

// 改变数据

dt.Rows[0]["Gender"] = "1"; 

解决方法二

数据项T类实现System.ComponentModel.INotifyPropertyChanged接口。MSDN上有该接口示例代码,有时间我再补充完整。

来了~1203

接着上面说哈,T is Character,下面是Character类,实现INotifyPropertyChanged接口。

 1     public class
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值