Winform DataGridView修改数据源界面不刷新问题

时间:2023-03-08 16:08:49

错误描述

对于dataGridView,设置数据源为一个List集合时,修改了List集合以后即使重新设置数据源界面也不会刷新。

注:如果先设置DataSource=null;可以重新加载,但是界面设计器里面设置的列名称,表头全部消失。

解决方法

  1. 设置数据源为DataTable
  2. 使用Rows.Add方法添加子项,需要重新加载数据时,先用Rows.Clear清理所有子项。

示例代码

private void BindData()
{
this.dgvMappings.ColumnCount = ;
this.dgvMappings.Columns[].HeaderText = "数据源表名称";
this.dgvMappings.Columns[].HeaderText = "数据源表主键";
this.dgvMappings.Columns[].HeaderText = "目标表名称";
this.dgvMappings.Columns[].HeaderText = "数据源查询字段";
this.dgvMappings.Columns[].HeaderText = "目标表插入字段"; this.dgvMappings.Columns[].Name = "SourceTableName";
this.dgvMappings.Columns[].Name = "SourceTablePrimaryKey";
this.dgvMappings.Columns[].Name = "TargetTableName";
this.dgvMappings.Columns[].Name = "SourceFields";
this.dgvMappings.Columns[].Name = "TargetFields"; this.dgvMappings.Columns[].Width = ;
this.dgvMappings.Columns[].Width = ;
this.dgvMappings.Columns[].Width = ;
this.dgvMappings.Columns[].Width = ;
this.dgvMappings.Columns[].Width = ; 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 });
} }