錯誤描述
對於dataGridView,設置數據源為一個List集合時,修改了List集合以后即使重新設置數據源界面也不會刷新。
注:如果先設置DataSource=null;可以重新加載,但是界面設計器里面設置的列名稱,表頭全部消失。
解決方法
- 設置數據源為DataTable
- 使用Rows.Add方法添加子項,需要重新加載數據時,先用Rows.Clear清理所有子項。
示例代碼
private void BindData() { this.dgvMappings.ColumnCount = 5; this.dgvMappings.Columns[0].HeaderText = "數據源表名稱"; this.dgvMappings.Columns[1].HeaderText = "數據源表主鍵"; this.dgvMappings.Columns[2].HeaderText = "目標表名稱"; this.dgvMappings.Columns[3].HeaderText = "數據源查詢字段"; this.dgvMappings.Columns[4].HeaderText = "目標表插入字段"; this.dgvMappings.Columns[0].Name = "SourceTableName"; this.dgvMappings.Columns[1].Name = "SourceTablePrimaryKey"; this.dgvMappings.Columns[2].Name = "TargetTableName"; this.dgvMappings.Columns[3].Name = "SourceFields"; this.dgvMappings.Columns[4].Name = "TargetFields"; this.dgvMappings.Columns[0].Width = 100; this.dgvMappings.Columns[1].Width = 100; this.dgvMappings.Columns[2].Width = 100; this.dgvMappings.Columns[3].Width = 215; this.dgvMappings.Columns[4].Width = 215; this.dgvMappings.Rows.Clear(); foreach(var map in settings.TableMapings) { this.dgvMappings.Rows.Add(new string[] { map.SourceTableName,map.SourceTablePrimaryKey,map.TargetTableName,map.SourceFields,map.TargetFields }); } }