C# winform datatable和dataviewgrid要配起来的写法(column静态+动态)

1.定义一个datatable,设为成员变量:
成员变量相当于全局变量,要写在整个类里面,主方法外面

DataTable BigTable = new DataTable();

列和表格的列相同,如果有实体的话,列可以这样设置:

var type = typeof(DeviceInfo);     //DeviceInfo为实体
foreach (var property in type.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))
{
    BigTable.Columns.Add(property.Name, property.PropertyType);
}

2.存入数据,datatable存数据的方法为挨列存,代码如下:

DataRow Row = BigTable.NewRow();
//将数据存入Row
BigTable.Rows.Add(Row);

这只是一行数据的写法,如果要插入多行数据,可以把这个方法封装起来,把数据当作参数传进去,或者你做假数据的话,循环就可以了。

3.将BigTable存到dataviewgrid里面,要先转化为datagridview的格式:

dataGridView1.DataSource = BigTable.DefaultView;

4.下面在winform界面中进行配置,把BigTable的属性存入表格的列里:

在这里插入图片描述
把列名存在这个里面,然后dataSource选择无就可以了,但是要把数据源加进来:
在这里插入图片描述
我认为加进来他才会引用,然后它会因为咱们写的那句话直接把数据塞进来,所以就不需要在ui里再设置一下,不知道我的理解正不正确;
如果自己设置的列后面出现了其他的列,就是因为后台datatable的列没有和表格里的列匹配上,要注意取property的时候类名不要写错了,还有就是表格列的value一定要配。

如有问题还望指正!谢谢!

二、不设column,在代码中灵活设置column

设置columns:

List<DataGridViewColumnEntity> listColumns1 = new List<DataGridViewColumnEntity>();

listColumns1.Add(new DataGridViewColumnEntity() { DataField = "ID", HeadText = "序号" });

ucDataGridView1.Columns = listColumns1;

然后定义一个Gridmodel的class,用来存数据源:

public class Gridmodel
    {
        public string ID { get; set; }
        public string xName { get; set; }
        public string yName { get; set; }
    }

一开始我没有设get;set;后来绑定的时候就绑不上,想知道为什么;
然后绑定数据源:

List<Gridmodel> dataSource = new List<Gridmodel>();

//这句话是写在循环里的,所以有i,理解就好;
dataSource.Add(new Gridmodel() { ID = index.ToString(), xName = i.Key.ToString(), yName = i.Value.ToString() });

ucDataGridView1.DataSource = dataSource;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值