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

如何从后台线程正确更新数据绑定datagridview

从后台线程正确更新数据绑定datagridview的方法如下:

  1. 使用委托(Delegate)更新UI元素

在后台线程中,无法直接更新UI元素。因此,需要使用委托(Delegate)来更新UI元素。具体步骤如下:

a. 创建一个委托(Delegate)

代码语言:csharp
复制
public delegate void UpdateDataGridViewDelegate(DataTable dataTable);

b. 在主窗体中,创建一个方法,用于更新datagridview

代码语言:csharp
复制
public void UpdateDataGridView(DataTable dataTable)
{
    if (this.dataGridView1.InvokeRequired)
    {
        UpdateDataGridViewDelegate updateDataGridViewDelegate = new UpdateDataGridViewDelegate(UpdateDataGridView);
        this.Invoke(updateDataGridViewDelegate, dataTable);
    }
    else
    {
        this.dataGridView1.DataSource = dataTable;
    }
}

c. 在后台线程中,调用主窗体中的方法,更新datagridview

代码语言:csharp
复制
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // 获取数据
    DataTable dataTable = GetData();

    // 更新datagridview
    UpdateDataGridViewDelegate updateDataGridViewDelegate = new UpdateDataGridViewDelegate(UpdateDataGridView);
    this.Invoke(updateDataGridViewDelegate, dataTable);
}
  1. 使用BindingSource

另一种方法是使用BindingSource。具体步骤如下:

a. 在主窗体中,创建一个BindingSource对象,并将其绑定到datagridview

代码语言:csharp
复制
private void Form1_Load(object sender, EventArgs e)
{
    BindingSource bindingSource = new BindingSource();
    bindingSource.DataSource = typeof(DataTable);
    this.dataGridView1.DataSource = bindingSource;
}

b. 在后台线程中,更新BindingSource对象的DataSource属性

代码语言:csharp
复制
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    // 获取数据
    DataTable dataTable = GetData();

    // 更新BindingSource对象的DataSource属性
    this.bindingSource1.DataSource = dataTable;
}

这两种方法都可以实现从后台线程正确更新数据绑定datagridview的目的。

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

相关·内容

通过 INotifyPropertyChanged 实现观察者模式

当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方...当属性改变时,它可以通知客户端,并进行界面数据更新.而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用.可用的地方太多了:例如上传进度,实时后台数据变更等地方...  数据绑定数据源对象可以是一个含有数据的单一对象,也可以是一个对象的集合。...之前,一直在讨论如何将目标对象与一个单一对象绑定。Silverlight中的数据绑定还能将目标对象与集合对象相绑定,这也是很常用的。比如显示文章的题目列表、显示一系列图片等。  ...必需调用DataGridView.Refresh();界面数据才会即使更新

2.7K10

如何使用StreamSetsMySQL增量更新数据到Hive

Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 在前面Fayson介绍了《如何在CDH...中安装和使用StreamSets》,通过StreamSets实现数据采集,在实际生产中需要实时捕获MySQL、Oracle等其他数据源的变化数据(简称CDC)将变化数据实时的写入大数据平台的Hive、HDFS...本篇文章主要介绍如何使用使用StreamSets通过JDBC的方式实时抽取增量数据到Hive。 StreamSets实现的流程如下: ?...执行后可以看到有2条数据输入和输出,这与我们测试数据库的数据相符合 ? 去HUE 页面查看hive 表中的数据,发现已经更新进来 ?...去HUE 中查看hive 表的数据,跟mysql 中同步,说明增量更新成功 ?

14.7K130

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

开发背景 完整代码下载地址:点我下载 优化移步: 《c#中在datagridview的表格动态增加一个按钮方法》 《C#实现多窗口切换:Panel详细教程(亲测)》 文章还在更新,上次更新时间2022...1].Value = status;//更新状态 // dataGridView.Rows.Remove(dataGridView.SelectedRows[0]); /...,然后对图中阴影部分右键【编辑列】 编辑列在添加id、学生姓名、宿舍号、借出时间、是否归还 设计好后如下图 5、绑定主页面实现跳转(Form2) 实现图: ①首先打开Form2...答:通过表单传值记录id在新的一个窗口查询一次数据更新则是用了update 如果做到删除?...答:通过表单传值获取到的id进行数据库语句删除,删除本地的再删除数据库里面的 窗口如何传值: 本次通过构造函数,特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在目标窗体中 int

20730

新版本EasyCVR出现设备管理“暂无数据”,如何正确更新MySQL数据库?

有用户反馈,已使用MySQL数据库,但是更新到新版本后,EasyCVR出现了设备管理页面显示“暂无数据”的现象,请求我们排查协助。...出现上述情况,是因为新版本EasyCVR数据库有些字段进行了改动。...更新数据库的正确操作步骤如下:1)首先,停止EasyCVR服务,确保所有进程都已经关闭:2)通过navicat或者dbeaver等工具,将旧版数据库进行转储sql文件:3)重新创建一个数据库,运行sql...4)重启EasyCVR服务,此时数据库结构就更新了。EasyCVR平台既能作为视频业务平台直接使用,也能作为视频能力层调用和集成到其他第三方平台。...随着安防视频监控技术的不断智能化发展,EasyCVR平台也在积极拓展人工智能检测与识别技术,比如人脸检测、人脸识别、车辆检测、车牌识别、轨迹跟踪、行为识别、物体检测等等,感兴趣的用户可以关注我们的更新

47820

WinForm企业级框架实战项目演练

阿笨将从自己实战项目经验角度出发,带领大家快速上手WinForm企业级应用程序开发入门到精通,实际感受一下C/S软件架构模式的开发效率!...2.6、WinForm实战技能之玩转ComboBox控件 1)、如何优雅的绑定下拉列表ComboBox数据源。...2.8、WinForm实战技能之玩转DataGridView列表控件 1)、如何优雅的绑定 DataGridView数据源(BindingList)。...2.9、WinForm实战技能之玩转Loading等待控件 1)、如何通过多线程技术实现类似“数据加载...Loading”窗体加载显示控件。...2)、如何实现带百分比进度显示的 “数据加载...Loading” 加载显示控件。 3.0、WinForm实战技能之玩转分页Page控件 1)、如何优雅的使用分页Page控件。

1.7K40

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

6)将节点服务器资源管理器中拖到 Visual Studio .NET 项目中,从而创建引用数据资源或监视其活动的数据组件。...”按钮后即进入数据集窗口,服务器资源管理器中选择一个数据连接,然后将该数据连接中的表拖曳到数据集设计界面,经过编译就建立了一个类型化数据集。...2.数据源控件 数据源控件是数据界面控件数据表获取数据的通道,包括DataSet控件和BindingSource控件。...3.BindingSource 控件的常用方法 1)RemoveCurrent方法:列表中移除当前项。 2)EndEdit方法:将挂起的更改应用于基础数据源。...1.DataGridView数据绑定 设置 DataSource 属性可以将数据绑定DataGridView 控件。

6.7K40

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

类型数据 DataTable dt = DBHelper.getDataTable(sql1); //将返回的结果绑定DataGridView控件的数据源中 this.dataGridView1.DataSource...= dt; 数据中查出数据绑定DataGridView控件中(Load事件,查询,给下拉框赋值) //定义SQL语句 string sql1 = "select * from RoomType";...dt = DBHelper.getDataTable(sql); //将返回的结果绑定DataGridView控件中 this.dataGridView1.DataSource = dt; 选中DataGridView...; //返回 return; } 第三步、定义sql语句(根据typeId修改) //(typeID是全局变量,DataGridView控件的cellClick...; } 删除(Click事件) //定义sql语句(typeID是全局变量,DataGridView控件的cellClick事件中获取选中的隐藏的类型ID) string sql = string.Format

7.7K20

INotifyPropertyChanged 接口

INotifyPropertyChanged 接口 用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。 例如,考虑一个带有名为 FirstName 属性的 Person 对象。...若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能: 实现 INotifyPropertyChanged 接口(首选)。 为绑定类型的每个属性提供更改事件。...示例 下面的代码示例演示如何实现 INotifyPropertyChanged 接口。在运行此示例时,您将注意到绑定DataGridView 控件无需重置绑定即能反映数据源中的更改。...control displays the contents of the list. 21 private DataGridView customersDataGridView =...new DataGridView(); 22 23 // This BindingSource binds the list to the DataGridView control

1.4K10

WPF备忘录(3)如何 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter

一、如何 Datagrid 中获得单元格的内容    DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. ...但是,WPF中的DataGrid 不同于Windows Forms中的 DataGridView。 ...null) child = GetVisualChild(v); else break; } return child; }  二、WPF 使用值转换器进行绑定数据的转换...IValueConverter  有的时候,我们想让绑定数据以其他的格式显示出来,或者转换成其他的类型,我们可以 使用值转换器来实现.比如我数据中保存了一个文件的路径”c:\abc\abc.exe”...Window.Resources> 现在我们去绑定数据的地方使用

5.4K70

SAP Cloud for Customer(C4C)前台显示的数据如何后台读取的

我们看到的页面里显示的数据,仍然是C4C基于的SAP UI5实现里,采用AJAX调用,C4C后台系统读取回前台的。 ? 将上图高亮json请求保存到本地细细查看: ?...这个json数据格式的结构反映了SAP C4C什么样的数据模型呢? 答案是SAP C4C UI模型的data model标签页里看到的数据结构: ?...上图的字段和我们Chrome开发者工具里观察到的JSON data model的字段,具有一一对应的关系: ?...SAP Cloud for Customer UI上的数据采取分页显示,总共281条sales order,分10页显示,每页显示30条数据: ?...索引19代表的字段正是UUID,采取索引值的设计,避免了直接使用字段名来描述每条记录的key-value,减小了最后后台传递到前台的json数据尺寸: ?

1.1K30

MultiRow中文版技术白皮书

数据绑定方面,MultiRow支持三种模式: .NET标准的数据绑定模型,任何实现了IList,IListSource,IBindingList和IBindingListView接口的实例都可以被绑定到...非绑定模式,即在不绑定数据源的情况下,可以很方便的操作和显示数据。 虚拟模式,虚拟模式是为大型数据存储区而设计的,仅当数据需要显示的时候,由用户来操作单元格的填充,编辑和删除。...在数据校验方面,MultiRow内置了十余种校验器,可以方便的满足诸如值范围校验,值比较校验,正则表达式校验等,当校验失败时,可以以Tip,Icon,声音等多种方式提示用户,以便重新输入正确的值。...重视易用性 为了降低用户的学习成本,MultiRow采用了和DataGridView相似的接口设计,对于曾经使用过Microsoft DataGridView或者熟悉DataGridView接口设计的开发人员...MultiRow的三种典型应用场景 具有复杂布局的数据表格 数据源的每一条记录根据模板上的设置进行展示,同时,用户也可以做选择,编辑,及更新数据等操作。 ?

1.2K50
领券