c# datagridview 中DataSource的使用总结
由于当前项目的窗体更新使用的是订阅事件的方式。其中有个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
c# datagridview 中DataSource的使用总结的更多相关文章
- [Winform] DataGridView 中 DataGridViewComboBox 的可编辑
在 DataGridView 中设置的 DataGridViewComboBox,默认是不可编辑的,即使将其列属性 DisplayStyle 设置成 ComboBox 或其他,也无法编辑: 故作如下处 ...
- C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel
其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...
- C#DataGridView中的常用技巧
0(最基本的技巧). 获取某列中的某行(某单元格)中的内容 this.currentposition = this.dataGridView1.BindingContext [this.dataG ...
- ADO.NET事务处理,初始回调函数,多张表的数据在同一个DataGridView中展示
执行ADO.NET事务包含四个步骤,接下来以Transaction对象为例介绍. (1)调用SQLConnection对象的BeginTransaction()方法,创建一个SQLTransactio ...
- 多次绑定DataGridView的DataSource会报错 NullReferenceExcepti
最近做了一个winform的项目,数据绑定在datagridview中,datagridview中的数据需要删除,分页,更新等之类的操作,所以就涉及到了datagridview的重新绑定问题,而且这些 ...
- c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”
ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述 相关代码 using System; us ...
- 将Datagridview中的数据导出至Excel中
首先添加一个模块ImportToExcel,并添加引用 然后导入命名空间: Imports Microsoft.Office.Interop Imports System.Da ...
- Winform知识汇总之多次绑定DataGridView的DataSource会报错 NullReferenceExcepti
最近做了一个winform的项目,数据绑定在datagridview中,datagridview中的数据需要删除,分页,更新等之类的操作,所以就涉及到了datagridview的重新绑定问题,而且这些 ...
- winfrom datagridview中DataGridViewTextBoxColumn的联动处理
这个问题有两种方法 第一种是用DataGridview中自带的DataGridViewTextBoxColumn 控件,第二种是动态添加combobox控件 方法一: 首先 窗体上拖拽一个 DataG ...
随机推荐
- HTTP服务&Ajax编程知识点导图
- 填坑*** WARNING L15: MULTIPLE CALL TO SEGMENT
填坑*** WARNING L15: MULTIPLE CALL TO SEGMENT 警告:发生了重入! 解释:在主循环里调用了一个函数,而在中断服务中又一次调用了同样的函数.当主循环运行到该函数中 ...
- rabbitmq 学习足迹
http://www.cnblogs.com/me-sa/archive/2012/10/20/RabbitMQ_VHost_Exchanges_queues_bindings_and_Channel ...
- php用simplexml来操作xml
<?php$username = 'zhansan';if (!file_exists('001.xml')){ $fp = fopen('001.xml', 'w'); $xmlContent ...
- linux 学习15 16 启动管理,备份和恢复
第十五讲 启动管理 . CentOS .x 启动管理 //此处指6.3 系统运行级别 .运行级别 运行级别 含 义 关机 单用户模式,可以想象为windows的安全模式,主要用于系统修复 //linu ...
- bootstrap--小李子demo
最近忙啊...看到各位冬鞋都在认真写博客,认真敲代码,认真工作,总觉得自己时间太少,总觉得时间不够,老了...... 进正题: 上次不知从哪里(忘了)下载了bootstrap的一些使用小demo,以后 ...
- kendo ui 富文本编辑控件 Editor 实现本地上传图片,并显示
富文本编辑的组件有很多,大名鼎鼎的KENDO UI中自然也有,但是默认功能中,只能包含网络图片, 而如果要实现本地上传图片,KENDO UI也提供了相应的功能,但必须实现KENDO规定的多个接口, 而 ...
- JQuery 概况
- Net通用进销存管理系统 + 开发文档+ 使用说明
通用进销存管理系统 + 开发文档+ 使用说明Net源码下载 包括下面的模块基础资料模块采购管理模块库存管理模块商务管理模块营业管理模块维修管理模块会员管理模块财务管理模块 Net通用进销存管理系统 + ...
- 分支合并git checkout adview git merge adview3
分支合并 git checkout adview git merge adview3