由于当前项目的窗体更新使用的是订阅事件的方式。其中有个datagridview 动态显示统计数据的列表框。本来想用textbox显示,但不规则,看起来也不美观,改由dgv显示。

我没打算用改dgv表的方式更新表内数据,涉及到检索重复等相关的要求,比如第一个事件 把某个产品加入,第二个事件来之后如果是跟第一个事件产品一样,在这个产品数加1,若不一样则另起一行。每次事件都要检索对比一次,导致效率降低

因为我已经对这些操作在前道里边通过list做了判断。所以在dgv里边在做一次重复操作显然多此一举,我需要 的是直接把打好的包 通过datasource的方式传递给dgv。

在实践过程中,涉及到几个问题;

第一,数据源不能是普通的list ,要用到bindinglist 或者bindingsource方法,最终觉得BindingSource 的方式最好。

第二,bingdinglist 直接赋值给dgv.DataSource ,dgv窗体不显示更新,尽管数值已经改变,但窗体就是不反应,  bingdinglist.refresh 或者reset 也没什么用。这里边的探索没有进一步深入,因为最终用bindingsource解决

代码很简单

  void OnOverTopInOrderForm(ReOverTopinOrderArgs e)    //接收事件{BindingSource bs = new BindingSource(); if (dgvovertop.InvokeRequired){dgvovertop.BeginInvoke(new MethodInvoker(delegate{ReOverTopinOrder reovre;//= new ReOverTopinOrder();foreach (var item in e.Reovertopinorderlist){reovre = new ReOverTopinOrder();reovre.卷烟名称 = item.卷烟名称;reovre.已扫数量 = item.已扫数量;//reovertb_list.Add(reovre);//reovertb_list.
                        bs.Add(reovre);                      }      dgvovertop.DataSource= bs;     //赋值控件自动更新

//var  dt=  dgvovertop.DataSource as BindingList<ReOverTopinOrder>;// dt.//      reovertb_list = e.Reovertopinorderlist;//     dgvovertop.Refresh();//  reovertb_list.ResetBindings();//  bdlst.AddingNew//    dgvovertop.DataSource = mess;//  reovertb_list.Add(reovre);
                }));}else{//   dgvovertop.DataSource = mess;
            }//    dgvovertop.Refresh();//   reovertb_list.ResetBindings();//    ControlHelper.ShowDgvControl1(dgvovertop);//     reovertb_list = e.Reovertopinorderlist;}

一下是参考文章

http://www.cnblogs.com/monkeyZhong/p/4530795.html

转载于:https://www.cnblogs.com/zuochanzi/p/6247946.html

c# datagridview 中DataSource的使用总结相关推荐

  1. datagridview java_仅更新datagridview中的一个单元格

    我正在编写一个Watch Window,它从 Serial Port 获取数据,并在 DataGridView 中显示变量info / value . 我有一个 Timer Event ,每隔500毫 ...

  2. 将Excel的数据导入DataGridView中(转)

    https://www.cnblogs.com/lhxhappy/archive/2008/11/26/1341873.html /// <summary>/// 点击按钮导入数据/// ...

  3. 读取Excel表格数据到DataGridView中

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

  4. C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

  5. 怎么将excel数据导入到datagridview中

    本人小白,想要实现EXCEL文件中的数据导入到datagridview中,EXCEL中的数据是多行多列,行数和列数不确定,如何实现导入到datagridview中显示,具体的界面如下: 两个butto ...

  6. 读取txt文件赋值到DataGridView中

    先查看txt是每条信息之间是通过什么分割,我是通过换行符(\n)分割的, 然后再看每一条信息中字段是通过什么分割,我的字段是通过 tab键(\t)分割. 第一步 先获取到txt文件的路径: //获取绝 ...

  7. c#winform演练 ktv项目 在dataGridView中显示歌曲列表

    c#winform演练 ktv项目 在dataGridView中显示歌曲列表 dgv控件绑定泛型数组 dgv对象.DataSource = 数据源 关于数据源,它可以是: 数据集中的某个表 泛型对象数 ...

  8. winfrom datagridview中DataGridViewTextBoxColumn的联动处理

    这个问题有两种方法 第一种是用DataGridview中自带的DataGridViewTextBoxColumn 控件,第二种是动态添加combobox控件方法一:首先 窗体上拖拽一个 DataGri ...

  9. C#DataGridView中的常用技巧

    只列出技巧部分,后面会有补充 0(最基本的技巧). 获取某列中的某行(某单元格)中的内容   this.currentposition = this.dataGridView1.BindingCont ...

最新文章

  1. java 程序启动界面_程序启动界面java代码
  2. “当前不会命中断点 还没有为该文档加载任何符号”解决方法
  3. Thread Safety in the Standard C++ Library
  4. 分享一些笔记本电脑日常保养技巧
  5. P1407-[国家集训队]稳定婚姻【tarjan,强连通分量】
  6. python变量自加一_Python个人练习项目 2-1
  7. Hive Hooks介绍
  8. c语言输入数字字母个数字是什么意思,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  9. 杨玲 201771010133《面向对象程序设计(java)》第十六周学习总结
  10. js部分---表单验证;(含正则表达式)
  11. 利用计算机传播非法信息,非法侵入计算机信息系统罪如何处罚
  12. jQuery EasyUI 使用笔记
  13. 【虹科分享】什么是 RFC 2544?网络设备的性能基准测试方法
  14. C语言实现电脑关机程序
  15. 河海大学计算机专硕英语面试,河海大学翻译硕士(英语)考研复试流程
  16. 干货!详解服务器端和移动端性能测试指标
  17. iOS设置启动页并适配机型
  18. 百度地图通过经纬度坐标绘制移动路径轨迹
  19. python微信自动聊天小工具
  20. 同桌之间那些或暧昧或有趣的事

热门文章

  1. Office 2007 小技巧
  2. 11g DG中的参数
  3. Python实现web动态服务器
  4. APUE读书笔记-09进程关系(07)
  5. 论富客户端程序的webservice实现
  6. 什么是Redis?简述它的优缺点?
  7. Dubbo的SPI实现
  8. UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 723269-723270: illegal multibyte s
  9. linux 显示文件多少行
  10. redis专题:redis的持久化方式有哪些?redis数据的备份和恢复策略