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

错误描述

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

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

解决方法

  1. 设置数据源为DataTable
  2. 使用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 });
            }

        }
时间: 2025-01-06 09:49:57

Winform DataGridView修改数据源界面不刷新问题的相关文章

C# WinForm DataGridView界面设计小技巧

在窗口中表格是非常常见的数据显示形式,所以界面的展示效果非常重要,通过多次的使用之后发现C# WinForm DataGridView控件默认的显示样式非常之反人类,不过好在可视化操作只需几个简单的属性修改就能得到很好的效果. 下面请看生成的默认属性的DataGridView显示: 非常之反人类的表格. 开始修改下面几个通过名字就能够读懂的属性(当然是通过VS属性窗口修改,也可以在初始化代码中手动修改DataGridView的属性): AllowUserToAddRows=False; //不同

winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog) 需求 登录界面: 1.要求 密码 文本可以显示和隐藏 字符 password属性 2.显示输入按钮button 要求显示输入按钮 按下去之后,实现 名字变成“取消”,取消之后密码又是隐藏的 3.要求只能输入错误 3次,3次之后自动退出 4.要求点击修

winform datagridview 不显示默认第一列 不显示未绑定列 数据源发生改变时自动更新 (转)

不显示带星号的第一列: datagridview属性框中将 RowHeadersVisiber 设置为  false 不显示未绑定列: datagridview有一个属性是 AutoGenerateColumns.但是让人不理解的是这个属性不在属性框中,因此你在那里找不到它.只能在后台代码中进行设置. this.datagridview1.AutoGenerateColumns  = false; 数据源发生改变时自动更新: datagridview的数据源在页面操作的过程中经常会发生变化.我们

C# winform DataGridView 操作大全

C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法: 方法一: int index=this.dataGridView1.Rows.Add(); this.dataGridView1.Rows[index].Cells[

C# winform dataGridView

1 private void btnConn_Click(object sender, EventArgs e) 2 { 3 //定义连接字符串 4 string constr = "server=.;database=DBTest;uid=sa;pwd=sa;"; 5 SqlConnection con = new SqlConnection(constr); 6 try 7 { 8 con.Open(); 9 SqlCommand cmd = new SqlCommand(&quo

WinForm DataGridView分页功能

WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件  .CS: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.T

[转]WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决

背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI 代码如下: using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.IO; using System.Windows.Forms; namespace W

C# winform datagridview 内嵌控件值改变后立即触发事件,而不需要离开该单元格时才触发,此时需要用到dgv_CurrentCellDirtyStateChanged事件

以下是参考代码 //datagridview内嵌控件值修改事件 private void dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e) { if (dgv.IsCurrentCellDirty) { dgv.CurrentCellDirtyStateChanged -= dgv_CurrentCellDirtyStateChanged; dgv.CommitEdit(DataGridViewDataErrorContex

WinForm DataGridView 绑定泛型List(List&lt;T&gt;)/ArrayList不显示的原因和解决

背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI 代码如下: using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.IO; using System.Windows.Forms; namespace W