DataGrid 的DataSource重新加载数据

DataGrid 的DataSource重新加载数据,若直接重新给DataSource赋值是没有效果的,若只是修改原有数据中的单个值,此方法有效,但是针对完全不一样的数据直接重新赋值的方式是无效的,此时需要先删除DataSource原有的数据,再赋给它新的值。

删除方式:

1.

DataGridView1.DataSource =null 此方式会将之前自定义现实的列删除(相当于删除结构),再次赋值DataGridView1显示的列就会按照赋值的数据源来显示,之前有自定义显示列的话就会失效。

2.

DataTable dt = (DataTable)DataGridView1.DataSource;
dt.Rows.Clear();

DataGridView1.DataSource=dt;此方式试的时候老是报DataGridView1.DataSource强制转坏失败的错误(ps:可能是代码那个地方没有写对)

3.

从以上方式2总结出,其实清空的原理就是按照原来赋值的数据源结构,赋一个空的值给DataSource 

假如之前赋的一个InfoDto的类型数据给DataSource ,此时清空DataSource 只需要一个空的InfoDto类型数据如下:

List<InfoDto> orderDtoNull= new List<InfoDto>();
DataGridView1.DataSource = orderDtoNull;

4.(推荐)

在重新赋值之前将数据源ToList()一下

DataGridView1.DataSource=OrderList.ToList();

原理:个人理解大概的意思是DataSource重新加载之前是使用的OrderList的原数据地址,后面虽然OrderList变了但是DataSource使用的数据地址没有变,ToList()之后就会将OrderList的新地址传给DataSource

此时重新赋值之后DataSource的数据就会有变化。

重新赋值:

根据以上方式之一的方式清空后只需再次将新的数据赋给DataSource 即可。

DataGridView1.DataSource = orderDtoNew;

ps:如果大家有更好的方式,欢迎留言!!!

原文地址:https://www.cnblogs.com/sugarwxx/p/9494168.html