zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU1813:Escape from Tetris(IDA)
    开发汉澳sinox64位,对接汉澳矩阵电脑
    新博客有了,文章转移到 http://www.iosxxx.com/
    Linux内核之于红黑树and AVL树
    MySQL用户及数据安全专题
    实现Android操作系统11种传感器介绍
    NSSCanner 提取 指定 字符串
    [置顶] 正则表达式应用:匹配IP地址
    某APK中使用了动态注册BroadcastReceiver,Launcher中动态加载此APK出现java.lang.SecurityException异常的解决方法
    JSTL解析——003——core标签库02
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/6247946.html
Copyright © 2011-2022 走看看