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