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:如果大家有更好的方式,欢迎留言!!!