winformdatagridview绑定后一直刷新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winformdatagridview绑定后一直刷新相关的知识,希望对你有一定的参考价值。

热门频道

首页

博客

研修院

VIP

APP

问答

下载

社区
推荐频道

活动

招聘

专题
打开CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved

打开APP

斯内科
关注
DataGridView使用数据源绑定,每隔几秒钟就刷新数据 原创
2021-11-07 23:02:55

斯内科
码龄11年
关注
我们测试使用内存数据表来绑定DataGridView,每隔5秒钟就刷新一次数据绑定。

新建winforms应用程序BIndDataDemo,将默认的Form1重命名为FormBindDataGridDemo。

窗体FormBindDataGridDemo设计如图:

窗体FormBindDataGridDemo主要程序如下

(忽略设计器自动生成的代码):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BIndDataDemo

public partial class FormBindDataGridDemo : Form

/// <summary>
/// 重新绑定数据事件
/// </summary>
public event Action<DataTable> EventRebindData;
/// <summary>
/// 线程是否已经运行
/// </summary>
bool isRun = false;
public FormBindDataGridDemo()

InitializeComponent();

dgvData.AutoGenerateColumns = false;
dgvcId.DataPropertyName = "Id";
dgvcEnglishName.DataPropertyName = "EnglishName";
dgvcChineseName.DataPropertyName = "ChineseName";
dgvcDBNum.DataPropertyName = "DBNum";
dgvcAddress.DataPropertyName = "Address";
dgvcDataType.DataPropertyName = "DataType";
dgvcByteCount.DataPropertyName = "ByteCount";
dgvcValue.DataPropertyName = "Value";


private void FormBindDataGridDemo_Load(object sender, EventArgs e)

EventRebindData += FormBindDataGridDemo_EventRebindData;
EventRebindData.Invoke(GenerateDataTable(2021));


private void FormBindDataGridDemo_EventRebindData(DataTable dt)

this.BeginInvoke(new Action(() =>

dgvData.DataSource = dt;
dgvData.FirstDisplayedScrollingRowIndex = dgvData.Rows.Count - 1;
));


/// <summary>
/// 生成数据表
/// </summary>
/// <param name="count"></param>
/// <returns></returns>
private DataTable GenerateDataTable(int count)

DataTable dataTable = new DataTable("DataDemo");
dataTable.Columns.Add("Id", typeof(int));
dataTable.Columns.Add("EnglishName", typeof(string));
dataTable.Columns.Add("ChineseName", typeof(string));
dataTable.Columns.Add("DBNum", typeof(string));
dataTable.Columns.Add("Address", typeof(int));
dataTable.Columns.Add("DataType", typeof(string));
dataTable.Columns.Add("ByteCount", typeof(int));
dataTable.Columns.Add("Value", typeof(string));

dataTable.Rows.Add(1, "DataItem1", "数据项1", "DB200", 0, "Int", 2, "32767");
dataTable.Rows.Add(2, "DataItem2", "数据项2", "DB200", 2, "Real", 4, "-723.425");
dataTable.Rows.Add(3, "Barcode", "条码", "DB200", 6, "String", 12, "ABCD");
double coefficient = (count % 2 == 0 ? 0.1 : 0.2);//系数
for (int i = 0; i < count; i++)

dataTable.Rows.Add(i + 4, $"DataItemi + 4", $"数据项i + 4", "DB200", 18 + 4 * i, "Real", 4, (i + 4) * 2 + coefficient * i);

return dataTable;


private void btnWrite_Click(object sender, EventArgs e)

int id = Convert.ToInt32(numId.Value);
if (id < 1 || id > dgvData.Rows.Count)

MessageBox.Show($"指定的编号【id】不在范围内", "错误");
return;

dgvData.Rows[id - 1].Cells["dgvcValue"].Value = txtValue.Text;


/// <summary>
/// 重新绑定按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRebind_Click(object sender, EventArgs e)

btnRebind.Enabled = false;
isRun = true;
Random random = new Random(Guid.NewGuid().GetHashCode());
Task task = Task.Factory.StartNew(() =>

//每隔一秒钟重新绑定
while (isRun)

EventRebindData.Invoke(GenerateDataTable(random.Next(1000, 8000)));
Thread.Sleep(5000);

);
Task.WaitAll(new Task[] task , 8000);


/// <summary>
/// 停止绑定事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStop_Click(object sender, EventArgs e)

btnRebind.Enabled = true;
isRun = false;


private void FormBindDataGridDemo_FormClosing(object sender, FormClosingEventArgs e)

//解除事件绑定
EventRebindData -= FormBindDataGridDemo_EventRebindData;
isRun = false;



程序运行如图:

打开CSDN,阅读体验更佳
DataGridView刷新数据_「已注销」的博客
在DataGridView上操作数据之后,无论是增删改都是对数据库进行了操作,而DataGridView这个控件在操作之后是不会变化的,需要重新的去数据库里读取一下数据才行,可以理解为之刷新 DataTable dt = (DataTable)dataGridView1.DataSource;dt....
C# DataGridView 刷新_originaldream的博客_c# datagrid...
c# 控件 dataGridView 使用时,都会遇到加载数据需要重新刷新。网上有不少答案,大致做一下总结。1)跟我以前一样笨,重新加载一遍数据,绑定一遍,使用datasource = datatable2)使用 datablinding 直接绑定数据3)使用updata() 刷新函数
C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新
C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新
datagridview 定时刷新
private void Eating2_Load_2(object sender, EventArgs e) string bookid = Users.StaticBook; // TODO: 这行代码将数据加载到表“dataSet_Notice.TB_NOTICE”中。您可以根据需要移动或移除它。 thi...
继续访问
winform datagridview实时更新显示查询结果_全民医保的博客_d...
datagridview是winform编程上很常见也很常用的控件之一,下面就根据一个小需求来展示一下datagridview是怎么实时刷新显示查询结果的。 目标界面 界面图片 说明:这个界面并不是VS系统的界面,是用到了第三方的控件实现的 ...
关于datagridView的刷新_Yanzzz的博客_datagridview刷新...
在重新读取SQl 数据库后,DataGridView中所有结果会显示两次。 但这并不是DataGridView本身的问题,而是由DataSet没有清空导致的。 所以解决办法就是ds.tables.clear(); ...怪不得dataGridView没有clear...
关于c# winform 中 使用多线程实现后台定时刷新 datagridview 数据
背景 本人c#新手,最近公司要求做的一个程序,需要利用后台定时查询数据绑定到datagridview上,要求程序不能出现假死,给人友好的体验,于是想到利用创建另一个线程用于查询数据然后再把数据显示在datagridview上。程序完成的时候,在本机上代码调试也没出问题,很完美,但是到了实际的运用的时候,datagridview的界面出了问题,没有数据并且显示一个大红叉,并且还报错。之前还以为是电...
继续访问
DataGridView刷新数据
  在DataGridView上操作数据之后,无论是增删改都是对数据库进行了操作,而DataGridView这个控件在操作之后是不会变化的,需要重新的去数据库里读取一下数据才行,可以理解为之刷新    DataTable dt = (DataTable)dataGridView1.DataSource; dt.Rows.Clear(); dataGridView1.Da...
继续访问
如何用timer实现DataGridView实时更新数据。
private void timer1_Tick(object sender, EventArgs e) dataGridView1.DataSource = bll.GetModelList().Tables[0]; dataGridView1.Refresh(); ...
继续访问
DataGridView数据刷新
自己遇到的问题,解决了,记录下,方便以后查找。 基本情况:前一段做一个Winform的项目,是用来验货的,多条产品数据,有一个应扫数量,和一个实扫数量,扫描到哪个商品就把列表中对应商品的数量加数量,如果商品实扫数量达到应扫数量,就移动到已扫完成列表。商品验货数量变化后,列表要精细排序,列表行的背景色要区分已验货的和未验货的。 如下图: 遇到问题:最开始用的List<>作为Da...
继续访问
热门推荐 如何实现DataGridView刷新数据?
近期做项目,遇到一个问题,
继续访问
mysql更新datagridview_如何在Visual Basic(.NET)中绑定到MySQL数据库的datagridview上实现自动刷新...
正如jmcilhinney建议的那样,datagridviews被绑定到DataTables(或者有时候是我自己的列表),所以他说的听起来应该有效 . 显然,因为它没有提出我的建议:你说"fields"你可以更新,添加,删除等所选行,对吗?听起来你正在做一些新行 . 正如您在数据绑定网格视图中所做的那样,我怀疑您实际上是以典型方式添加它们,而是采用某种程序化替代方案 .因此,尝试实现您的解决方案,...
继续访问
如何实现DataGridView实时更新数据
贴过来做技术积累,原文出处:http://dszhang.blog.163.com/blog/static/12281257420118541413584/ 最近一直在研究调度 涉及到用调度实时给客户发送短信的功能 其中就有用到实时更新的显示发送状态的 当然 今天不是以QUARTE为主 主要控件有 datagridview checkbox picturebox trackBar1
继续访问
winform datagridview实时更新显示查询结果
datagridview是winform编程上很常见也很常用的控件之一,下面就根据一个小需求来展示一下datagridview是怎么实时刷新显示查询结果的。 目标界面 界面图片 说明:这个界面并不是VS系统的界面,是用到了第三方的控件实现的 实现过程 这个界面用到了Groupbox、label、button和datagri...
继续访问
DataGridView控件强制刷新
C# 多线程刷新DataGridView控件 调用Refresh的方法最好放在控件对应的.cs文件里,不然可能导致调用Refresh后没刷新界面。
继续访问
DataGridView数据源更换或刷新时,表格内容不显示或者不变
之前遇到这样的问题,查看历史数据的时候绑定了datatable1。 之后改为实时数据显示,则将datatable1的数据情况,重新存入,但是DataGridView就不自动更新。 解决方案如下: _totalTable = bll.GetSingelInfo(InitSystemStaticInfo.CurProject?.TableName);//重新获取数据 dataGridView1.Dat...
继续访问
最新发布 绑定数据的自动更新(datagridview 数据绑定)
INotifyPropertyChanged 接口:向客户端发出某一属性值已更改的通知。 NotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。 在WPF中进行数据绑定的时候常常会用到INotifyPropertyChanged接口来进行实现,下面来看一个INotifyPropertyChanged的案例。 下面定义一个Person类: 上面定义的这个Person类中,对Name和Age属性进行了监听,但是没有对Hobby进行监听。通知后 绑定数据
继续访问
c#提高datagridview刷新速度(两种方法计时对比)
datagridview刷新速度提升,10000行数据刷新提速效果明显
继续访问

记录一次C# Linq to Sql实现DataGridView实时显示与刷新TCP/UDP服务端在线人数
实现串口的透传(简单的TCP/UDP透传),并且显示TCP/UDP实时刷新和显示连接情况或者监听情况。讲述成功实现的方式和雷点。
继续访问

DataGridView数据绑定问题
问题:给DataGridView绑定数据时如果已经在可视化界面绑定过一次数据,那么可能会遇到数据绑定失败的问题。 如果我们需要在代码处绑定数据,那么就需要先把可视化的数据绑定为无。 其次,重新给DataGridView绑定数据时需要用旧表引用新表 table0 = table1; 参考重新给datagridview设置数据源谨记的一件事 ...
继续访问

C# DataTable的DataColumn和DataRow数据绑定,DataGridView Datasource数据绑定DataTable,List
1. datasource数据绑定 根据列名的DataPropertyName进行数据绑定,HeaderText数据显示 2. datasource数据绑定
继续访问
datagridview自动刷新
asp.net
后端
写评论

评论

7

点赞



分享
参考技术A 新建winforms应用程序BIndDataDemo,将默认的Form1重命名为FormBindDataGridDemo。窗体FormBindDataGridDemo设计如图:窗体FormBindDataGridDemo主要程序如下(忽略设计器自动生成的代码):using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows.Forms;namespace BIndDataDemopublic partial class FormBindDataGridDemo : Form/// <summary>/// 重新绑定数据事件/// </summary>public event Action<DataTable> EventRebindData;/// <summary>/// 线程是否已经运行/// </summary>bool isRun = false;public FormBindDataGridDemo()InitializeComponent();dgvData.AutoGenerateColumns = false;dgvcId.DataPropertyName = "Id";dgvcEnglishName.DataPropertyName = "EnglishName";dgvcChineseName.DataPropertyName = "ChineseName";dgvcDBNum.DataPropertyName = "DBNum";dgvcAddress.DataPropertyName = "Address";dgvcDataType.DataPropertyName = "DataType";dgvcByteCount.DataPropertyName = "ByteCount";dgvcValue.DataPropertyName = "Value";private void FormBindDataGridDemo_Load(object sender, EventArgs e)EventRebindData += FormBindDataGridDemo_EventRebindData;EventRebindData.Invoke(GenerateDataTable(2021));private void FormBindDataGridDemo_EventRebindData(DataTable dt)this.BeginInvoke(new Action(() =>dgvData.DataSource = dt;dgvData.FirstDisplayedScrollingRowIndex = dgvData.Rows.Count - 1;));/// <summary>/// 生成数据表/// </summary>/// <param name="count"></param>/// <returns></returns>private DataTable GenerateDataTable(int count)DataTable dataTable = new DataTable("DataDemo");dataTable.Columns.Add("Id", typeof(int));dataTable.Columns.Add("EnglishName", typeof(string));dataTable.Columns.Add("ChineseName", typeof(string));dataTable.Columns.Add("DBNum", typeof(string));dataTable.Columns.Add("Address", typeof(int));dataTable.Columns.Add("DataType", typeof(string));dataTable.Columns.Add("ByteCount", typeof(int));dataTable.Columns.Add("Value", typeof(string));dataTable.Rows.Add(1, "DataItem1", "数据项1", "DB200", 0, "Int", 2, "32767");dataTable.Rows.Add(2, "DataItem2", "数据项2", "DB200", 2, "Real", 4, "-723.425");dataTable.Rows.Add(3, "Barcode", "条码", "DB200", 6, "String", 12, "ABCD");double coefficient = (count % 2 == 0 ? 0.1 : 0.2);//系数for (int i = 0; i < count; i++)dataTable.Rows.Add(i + 4, $"DataItemi + 4", $"数据项i + 4", "DB200", 18 + 4 * i, "Real", 4, (i + 4) * 2 + coefficient * i);return dataTable;private void btnWrite_Click(object sender, EventArgs e)int id = Convert.ToInt32(numId.Value);if (id < 1 || id > dgvData.Rows.Count)MessageBox.Show($"指定的编号【id】不在范围内", "错误");return;dgvData.Rows[id - 1].Cells["dgvcValue"].Value = txtValue.Text;/// <summary>/// 重新绑定按钮事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnRebind_Click(object sender, EventArgs e)btnRebind.Enabled = false;isRun = true;Random random = new Random(Guid.NewGuid().GetHashCode());Task task = Task.Factory.StartNew(() =>//每隔一秒钟重新绑定while (isRun)EventRebindData.Invoke(GenerateDataTable(random.Next(1000, 8000)));Thread.Sleep(5000););Task.WaitAll(new Task[] task , 8000);/// <summary>/// 停止绑定事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnStop_Click(object sender, EventArgs e)btnRebind.Enabled = true;isRun = false;private void FormBindDataGridDemo_FormClosing(object sender, FormClosingEventArgs e)//解除事件绑定EventRebindData -= FormBindDataGridDemo_EventRebindData;isRun = false;程序运行如图:打开CSDN,阅读体验更佳DataGridView刷新数据_「已注销」的博客在DataGridView上操作数据之后,无论是增删改都是对数据库进行了操作,而DataGridView这个控件在操作之后是不会变化的,需要重新的去数据库里读取一下数据才行,可以理解为之刷新 DataTable dt = (DataTable)dataGridView1.DataSource;dt....C# DataGridView 刷新_originaldream的博客_c# datagrid...c# 控件 dataGridView 使用时,都会遇到加载数据需要重新刷新。网上有不少答案,大致做一下总结。1)跟我以前一样笨,重新加载一遍数据,绑定一遍,使用datasource = datatable2)使用 datablinding 直接绑定数据3)使用updata() 刷新函数C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新C# datagridview 与数据源绑定后对数据的,增加,删除,插入,更新datagridview 定时刷新private void Eating2_Load_2(object sender, EventArgs e) string bookid = Users.StaticBook; // TODO: 这行代码将数据加载到表“dataSet_Notice.TB_NOTICE”中。您可以根据需要移动或移除它。 thi...继续访问winform datagridview实时更新显示查询结果_全民医保的博客_d...datagridview是winform编程上很常见也很常用的控件之一,下面就根据一个小需求来展示一下datagridview是怎么实时刷新显示查询结果的。 目标界面 界面图片 说明:这个界面并不是VS系统的界面,是用到了第三方的控件实现的 ...关于datagridView的刷新_Yanzzz的博客_datagridview刷新...在重新读取SQl 数据库后,DataGridView中所有结果会显示两次。 但这并不是DataGridView本身的问题,而是由DataSet没有清空导致的。 所以解决办法就是ds.tables.clear(); ...怪不得dataGridView没有clear...关于c# winform 中 使用多线程实现后台定时刷新 datagridview 数据背景 本人c#新手,最近公司要求做的一个程序,需要利用后台定时查询数据绑定到datagridview上,要求程序不能出现假死,给人友好的体验,于是想到利用创建另一个线程用于查询数据然后再把数据显示在datagridview上。程序完成的时候,在本机上代码调试也没出问题,很完美,但是到了实际的运用的时候,datagridview的界面出了问题,没有数据并且显示一个大红叉,并且还报错。之前还以为是电...继续访问DataGridView刷新数据在DataGridView上操作数据之后,无论是增删改都是对数据库进行了操作,而DataGridView这个控件在操作之后是不会变化的,需要重新的去数据库里读取一下数据才行,可以理解为之刷新 DataTable dt = (DataTable)dataGridView1.DataSource; dt.Rows.Clear(); dataGridView1.Da...继续访问如何用timer实现DataGridView实时更新数据。private void timer1_Tick(object sender, EventArgs e) dataGridView1.DataSource = bll.GetModelList().Tables[0]; dataGridView1.Refresh(); ...继续访问DataGridView数据刷新自己遇到的问题,解决了,记录下,方便以后查找

小米路由器3G怎么刷入openwrt18.06.2

并刷入不死breed

一、刷机前的准备工作

###刷入开发者ROM

1.在http://www.miwifi.com/miwifi_download.html上下载对应的ROM for R3G 开发版

2.在小米路由器上选择系统升级,然后选择ROM进行升级,等重启完成后即可。

开启路由器ssh登录

1.先让路由器绑定账号,打开小米WIFI app,然后需要手机和路由器一个网络,登录后即可绑定

2.http://www.miwifi.com/miwifi_open.html在网站中找到开启SSH工具,会显示root密码,注意这个文件每个路由器都不一样。

3.请将下载的工具包bin文件复制到U盘(FAT/FAT32格式)的根目录下,保证文件名为miwifi_ssh.bin。

4.断开小米路由器的电源,将U盘插入USB接口。

5.按住reset按钮之后重新接入电源,指示灯变为黄色闪烁状态即可松开reset键。

6.等蓝灯亮起即可刷机完成。

7.ssh root@192.168.1.1即可登录到路由器上

二、刷入breed

Ps:这一步是防止路由被刷坏

1.在https://breed.hackpascal.net/下载breed-mt7621-xiaomi-r3g.bin

2.然后将文件重命名为breed.bin后,上传到小米路由器,可以使用U盘或者使用SCP上传,上传到/tmp下

3.进入到小米路由开始写入breed mtd -r write /tmp/breed.bin Bootloader

4.刷入后,机器会重新启动,按住reset键开机,等到路由指示灯闪烁时,松开reset键,然后浏览器中输入192.168.1.1即可进入breed后台。

5.备份后重启路由回到小米固件的,然后ssh登陆准备刷入openwrt

三、刷入openwrt

1.打开 https://downloads.lede-project.org/snapshots/targets/ramips/mt7621/下载对应的文件mir3g-squashfs-kernel1.bin,mir3g-squashfs-rootfs0.bin,mir3g-squashfs-sysupgrade.tar,并上传到路由器。

2-1.由于我刷入了breed,需要执行

mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel0

mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1

mtd write openwrt-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0

reboot

2-2.如果没有刷入breed,则需要执行

mtd write openwrt-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1

mtd write openwrt-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0

nvram set flag_try_sys1_failed=1

nvram commit

reboot

ps:刷入固件后请勿关闭路由器,要接着执行如下步骤,否则ssh会失效。

3.等路由启动后,即可进行ssh登录,ssh root@192.168.1.1此时root是没有密码的,

然后安装luci。

opkg update

opkg install luci

opkg install luci-i18n-base-zh-cn

4.浏览器登陆192.168.1.1,在界面选择系统,备份/升级,刷写新的固件,上传openwrt-ramips-mt7621-mir3g-squashfs-sysupgrade.tar,升级版本,等待启动完成后执行3步骤,重新安装luci以及luci-i18n-base-zh-cn,即可完成。

试试这样可以不
参考技术A 小米路由器还有这么个功能吗?下路由器,就是在远程控制很好,我那个在办公室都可以,把家里的路由器关掉。 参考技术B 现的祖国
在我
参考技术C 自己上网查一下,搜一下

以上是关于winformdatagridview绑定后一直刷新的主要内容,如果未能解决你的问题,请参考以下文章

小米手机刷机后一直卡在开机界面怎么办?

Spring boot mybatis项目启动后一直刷日志的bug修复……

小知识:引入@RabibitListener后,发现控制台一直刷屏,显示数据接收失败

winform datagridview 绑定泛型集合变得不支持排序的解决方案

小米路由器3G怎么刷入openwrt18.06.2

苹果手机刷机后忘记了id账号和密码怎么办