首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当绑定源正确时,C#中的DataGridView不会更新

基础概念

DataGridView 是 Windows Forms 应用程序中的一个控件,用于显示和编辑表格数据。它通常与数据源(如 DataTableList<T> 或数据库连接)绑定,以便自动填充和更新数据。

相关优势

  1. 数据绑定:自动从数据源填充数据,并在数据源更改时更新显示。
  2. 编辑功能:允许用户直接在控件中编辑数据。
  3. 排序和筛选:支持列排序和基本的筛选功能。
  4. 自定义渲染:可以通过自定义渲染器来改变单元格的外观。

类型

DataGridView 可以绑定多种类型的数据源,包括但不限于:

  • DataTable
  • DataSet
  • List<T>(其中 T 是一个类)
  • 数据库连接(通过 SqlDataAdapter 等)

应用场景

适用于需要显示和编辑表格数据的任何 Windows Forms 应用程序,例如:

  • 数据管理系统
  • 报表生成工具
  • 客户关系管理系统(CRM)

问题原因及解决方法

当绑定源正确时,DataGridView 不会更新可能有以下几个原因:

  1. 数据源未正确设置:确保 DataGridViewDataSource 属性已正确设置为数据源。
  2. 数据源未触发更改通知:如果数据源是自定义类集合,确保实现了 INotifyPropertyChanged 接口或使用了 BindingList<T>
  3. 数据绑定方式:确保使用了正确的数据绑定方式(例如,使用 DataSource 属性而不是手动添加行)。

示例代码

假设我们有一个简单的 Person 类和一个 List<Person> 作为数据源:

代码语言:txt
复制
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 30 },
    new Person { Name = "Bob", Age = 25 }
};

在 Windows Forms 窗体中绑定 DataGridView

代码语言:txt
复制
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        dataGridView1.DataSource = people;
    }
}

解决方法

  1. 确保数据源正确设置
  2. 确保数据源正确设置
  3. 实现 INotifyPropertyChanged 接口(如果使用自定义类):
  4. 实现 INotifyPropertyChanged 接口(如果使用自定义类):
  5. 使用 BindingList<T>(如果使用自定义类集合):
  6. 使用 BindingList<T>(如果使用自定义类集合):

参考链接

通过以上方法,可以确保 DataGridView 在绑定源正确时能够正确更新。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#】让DataGridView输入实时更新数据计算列

DataGridView(下称dgv),A、B两列都要在dgv显示,其中A列可编辑(ReadOnly=false)。...(DataRowView.IsEdit为true),计算列也同样不会更新。...dgv绑定数据后,它每一行就对应了数据一行(或叫一项),这就是我所谓行】。...可以通过DataGridViewRow.DataBoundItem属性获得,该属性类型是object,dgv数据为DataTable或DataView(下称dv),DataBoundItem真实类型就是...也就是如果要连续输入,必须在每次输入后用鼠标或方向键取消全选并将光标定位到正确位置~这不蛋疼吗,必须解决!首先为什么会全选原因不明,我猜是由于数据更新反过来影响dgv所致。

5.2K20

使用 jquery 插件操作 input 同步 vue 绑定变量办法

发表于2018-05-102019-01-01 作者 wind 为什么要同步到 vue 上绑定变量呢,因为如果我们不更新绑定变量值,vue 下次刷新组件时候,就会将旧更新到 input...我一般使用方法是在 vue 定义自定义指令,函数可以获取到 vnode,有了 vnode 就可以获取vnode.context也就是 vue 对象,有了 vue 对象就可以将新值设置到v-model...绑定那个变量上,因为这是指令,还不确定有多少个地方使用到了这个指令,所以可以通过从 el 上获取到一些信息,来帮助获取对应 v-model 对象。...例如下面这个自动完成 jquery 插件例子: Vue.directive('myautocomplete', { inserted: function (el,binding

1.7K10
  • C#学习之路(1)--数据库技术

    前言 在7月10日就要去扬州实习了,首先是为期2个月培训。一个月Java,一个月C#。在这一个月里面,准备梳理一下java和C#基础知识,同时也进行更深一步学习。...创建DataAdapter对象,提供数据与记录集之间数据交换,数据库与内存数据交换。 创建DataSet对象,将从数据得到数据保存在内存,然后对数据进行相关各种操作。...Update()方法:该方法用于将DataSet对象某一个数据表更改内容更新到对应真实数据库里面的数据表。...:如果用调用到RowState初始化DataTable再去调用Update()方法去更新数据库里面的表,将不会有任何变化。...DataSet数据表StudentTable更新到数据

    1.9K40

    C# 也可以连接和操作Access数据库

    以前就听说过C#可以通过ODBC进行连接其他类型数据库,一直也没怎么研究。最近啊,小编一次偶然机会,迫使不得不去使用Access数据库进行开发。当然,数据库操作其实一通百通,也没算费多少力气。...这里写一下总结一下,希望可以帮助对C#操作Access数据库,有需求朋友。 当然文章有什么问题,请及时指正。一起交流探讨。...小编使用是Win7 64位系统进行测试,管理工具中所列出来是64位配置。在32位系统应该会显示。 在64位系统,是包含64位和32位两个数据源程序。...Winform项目打开,添加DataGridView。为DatagridView添加指定数据。 选择数据库,点击下一步: ? ? 选择数据集: 新建连接: ?...选择自己定义数据名称,直接创建即可: ? 选择数据库内绑定数据: ? 数据添加完毕,直接运行效果: ? 好了,就到这里了,如有错误,还请指正。 ?

    4K20

    通过 INotifyPropertyChanged 实现观察者模式

    当属性改变,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用地方太多了:例如上传进度,实时后台数据变更等地方...当属性改变,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用地方太多了:例如上传进度,实时后台数据变更等地方...  数据绑定数据对象可以是一个含有数据单一对象,也可以是一个对象集合。...之前,一直在讨论如何将目标对象与一个单一对象绑定。Silverlight数据绑定还能将目标对象与集合对象相绑定,这也是很常用。比如显示文章题目列表、显示一系列图片等。  ...使用ObservableCollection   数据集合对象必须继承IEnumerable接口,为了让目标属性与数据集合更新(不但包括元素修改,还包括元素增加和删除)保持同步,数据集合还必须实现

    2.8K10

    DataGridView控件用法一:数据绑定

    绑定到包含多个列表或表数据,只需将DataMember属性设置为指定要绑定列表或表字符串即可。...一、非绑定模式 所谓绑定模式就是DataGridView控件显示数据不是来自于绑定数据,而是可以通过代码手动将数据填充到DataGridView控件,这样就为DataGridView控件增加了很大灵活性...,通常用来做未绑定列 DataGridViewComboBoxColumn 用户在单元格显示下拉列表,不会绑定时自动生成,通常需要手动进行数据绑定 DataGridViewLinkColumn 用于在单元格显示超链接...,不会绑定时自动生成,通常需要进行手动绑定数据 二、绑定模式 就是将已经存在数据绑定DataGridView控件上。...在绑定到包含多个列表或表数据,只需将DataMember属性设置为指定要绑定列表或表字符串即可。

    3.9K20

    可视化数据库设计软件有哪些_数据库可视化编程

    学习目标: C#数据库应用程序开发环境构成 服务器资源管理器 类型化数据集 创建简单数据库应用程序 水晶报表 Notes: 类型化数据集 利用服务器资源管理器建立数据连接 利用服务器资源管理器可执行任务如下...2)Label控件 1.作用 Label控件用于显示数据表当前记录字段值。 2.绑定属性 DataBindings属性用于绑定数据。 Text子属性用于选择数据及字段。...3)TextBox控件 1.作用 TextBox控件用于显示及编辑数据表当前记录字段值。 2.绑定属性 DataBindings属性用于绑定数据。...作用2:通过连接字段绑定,使主表(如tblClass)与代码表(如tblDept)建立连接。 2.属性 1)DataSource:选择代码表数据绑定控件。...1.DataGridView数据绑定 设置 DataSource 属性可以将数据绑定DataGridView 控件。

    6.7K40

    期末作业C#实现学生宿舍管理系统

    开发背景 完整代码下载地址:点我下载 优化移步: 《c#datagridview表格动态增加一个按钮方法》 《C#实现多窗口切换:Panel详细教程(亲测)》 文章还在更新,上次更新时间2022...做一个获取,需要获取id值,来进行删除,首先新建一个“删除”按钮 双击在该方法中加入代码(这部分代码很关键,建议看懂,在开发我找到另外一个方法不过他存在bug,这个无论有没有值不会报错)...需要和user表id对应绑定(很多同学在设计时会将多个重复信息放在同一个表,如果在borrow表中加入了room_num字段这样的话就不方便修改了,因为这时同一个字段会在多个表,不利于修改,大家一定要明白这点...这样在切换过程中就不会感觉框变化 ③设计可视化窗体(根据自己需求自己来) 我们添加一个datagridview,然后对图中阴影部分右键【编辑列】 编辑列在添加id、学生姓名、宿舍号...答:通过表单传值记录id在新一个窗口查询一次数据,更新则是用了update 如果做到删除?

    26230

    MultiRow中文版技术白皮书

    首先,通过集成设计器设计适合于业务需求模板,并把模板应用于MulitRow控件,之后把MultiRow绑定到相关数据(或者直接使用MultiRow绑定模式),这样数据每一条数据记录将会根据所设计模板进行呈现...非绑定模式,即在不绑定到数据情况下,可以很方便操作和显示数据。 虚拟模式,虚拟模式是为大型数据存储区而设计,仅数据需要显示时候,由用户来操作单元格填充,编辑和删除。...在数据校验方面,MultiRow内置了十余种校验器,可以方便满足诸如值范围校验,值比较校验,正则表达式校验等,校验失败,可以以Tip,Icon,声音等多种方式提示用户,以便重新输入正确值。...重视易用性 为了降低用户学习成本,MultiRow采用了和DataGridView相似的接口设计,对于曾经使用过Microsoft DataGridView或者熟悉DataGridView接口设计开发人员...MultiRow三种典型应用场景 具有复杂布局数据表格 数据每一条记录根据模板上设置进行展示,同时,用户也可以做选择,编辑,及更新数据等操作。 ?

    1.3K50

    bindingnavigator如何与datagridview绑定

    BindingSource控件与数据建立连接,然后将窗体控件与BindingSource控件建立绑定关系来实现数据绑定,简化数据绑定过程。...Current 获取BindingSource控件的当前记录 DataMember 获取或设置连接器当前绑定数据特定数据列表或数据库表。...DataSource 获取或设置连接器绑定数据。 Filter 获取或设置用于筛选表达式。 Item 获取或设置指定索引记录。...Find 在数据查找指定项。 MoveFirst 移至列表第一项。 MoveLast 移至列表最后一项。 MoveNext 移至列表下一项。...BindingSource.EndEdit();会把更新提交到内存对象或对象列表(如DataSet)。 BindingSource.Update方法会把更新提交到数据库。

    1.8K20

    C#实现WinForm DataGridView控件支持叠加数据绑定

    我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应数据即可,但需注意数据必须支持IListSource类型,这里说是支持...说白了就是支持数据多次绑定,标准绑定方法只支持单一绑定,即每次绑定均会清除原来数据,而叠加数据绑定则可实现每次绑定均以附加形式(原数据保留)添加到DataGridView控件,这样就实现了分页加载...DataGridView造成影响,我定义了一个接口来规范它:IAppendDataAble,当然这个接口适用于所有控件,然后在扩展方法AppendData加判断,如果实现了...我这里是基于DataGridView来扩展,大家也可以基于我定义DataGridView2来扩展,这样更方便。另外,我上面实现了针对两种数据类型进行了分别处理,以满足大多数情况。...2.设置DataGridView列,将列DataPropertyName设置为需要绑定数据字段名称,这步很重要。

    1.9K30

    C# 可视化程序设计机试知识点汇总,DBhelper类代码

    类型数据 DataTable dt = DBHelper.getDataTable(sql1); //将返回结果绑定DataGridView控件数据 this.dataGridView1.DataSource...= dt; 数据查出数据绑定DataGridView控件(Load事件,查询,给下拉框赋值) //定义SQL语句 string sql1 = "select * from RoomType";..." //将返回结果绑定DataGridView控件 this.comboBox1.DataSource = dt; 根据条件查询并重新绑定DataGridView控件(点击查询按钮,模糊查询)...DataTable dt = DBHelper.getDataTable(sql); //将返回结果绑定DataGridView控件 this.dataGridView1.DataSource =...dt = DBHelper.getDataTable(sql); //将返回结果绑定DataGridView控件 this.dataGridView1.DataSource = dt; 选中DataGridView

    7.7K20

    使用DataGridView进行增删改查,并同步到数据库

    DataGridView控件具有极高可配置性和可扩展性。它提供有大量属性、方法和事件,能够用来对该控件外观和行为进行自己定义。...以下通过一个小样例来展示DataGridView进行增删改查,并同步到数据库功能。 窗口展示: 用户需求: 1.窗口显示,将数据库中用户表数据显示出来。...2.选中一行,运行删除操作,同一候在数据库对应数据被删除。 3.双击某个数据,进行编辑,或者在空白行加入新数据,然后点击更新,数据库随之更新。...DataTable DataGridView1.DataSource = DT '将DataTable数据传给DataGridView1显示 End Sub '更新操作...代码解析: 1.DataSet与DataTable: DataSet:数据集,简单理解为一个暂时数据库,将数据数据保存在内存,独立于不论什么数据库。

    4.2K20

    C#—— DataGridView控件各种操作总结(单元格操作,属性设置)

    单元格 ToolTipText 变化时候也会引发该事件。但是,DataGridViewDataSource被指定且VirualMode=True时候,该事件不会被引发。...补足: 如果 DataGridView 绑定是 DataView 的话,通过 DataView.AllowDelete 也可以控制行删除。 ********行删除条件判断处理。...在该事件处理除了可以设定默认值以外,还可以指定某些特定单元格ReadOnly属性等。...= DataGridView1.ColumnCount) throw new ApplicationException("粘贴列数不正确。")...比起 使用循环遍历,使用该事件来设定右键菜单效率更高。但是,在DataGridView使用了DataSource绑定而且是VirtualMode 候,该事件将不被引发。

    7.4K32
    领券