zoukankan      html  css  js  c++  java
  • WinForm程序用使用List对象绑定DataGridView数据源

         1、 在用List<T>对象绑定DataGridView数据源属性的时候,数据源的内容不会动态更新,如果List<T>对象集合中的数据发生变化,那么数据控件的数据源是不会得到更新的。
    一般也不建议用List<T>去填充数据显示控件的数据源。
         如果一定要用List<T>对象去绑定数据源,那么首先设置DataGridView的DataSource属性为new List<T>(),然后再将List<T>集合重新赋值给DataSource属性。这样既可解决同步更新问题。
    当DataGridView的DataSource绑定的为DataTable时,当DataTable的内容发生改变时,DataGridView中的内容会自动跟随DataTable改变而不用重新绑定数据源;
    
    (注:不能设置DataGridView的DataSource属性为null,否则会破坏DataGridView中已经设置好的列结构。)
    
         2、数据绑定后的添加删除问题:
    
     如果要对绑定在DataGridView中的List<T>进行数据的添加删除,先要把List<T>转换成BindingList<T>,
    
    再进行绑定:DataGridView1.DataSource=new BindingList<MyClass>(new List<MyClass>())。否则的话会产生许多意想不到的错误。
    
    如:初始绑定空数据后再添加数据绑定后,却取不到DataGridView.CurrentCell属性。

    List<URLListObject> rltList = new List<URLListObject>();
    
    rltList = this.AnalysisHTML();
    
    
    dataGridView1.DataSource = new BindingList<URLListObject>(rltList);
    
    //修改数据并刷新
                foreach (URLListObject per_o in rltList)
                {
                    per_o.finalUrl = BaseObjects.GetTheRedirectUrl(per_o.url);
                    
                }
                this.dataGridView1.Refresh();
    

      

  • 相关阅读:
    python从可迭代对象中取值
    python中可迭代对象和列表
    python中字典生成式
    Redis源码解析之跳跃表(一)
    Redis高可用集群
    Redis主从&哨兵集群搭建
    Java并发之ThreadPoolExecutor源码解析(三)
    Java并发之ThreadPoolExecutor源码解析(二)
    Java并发之ThreadPoolExecutor源码解析(一)
    并发编程之JMM&Volatile(三)
  • 原文地址:https://www.cnblogs.com/sxypeace/p/5624158.html
Copyright © 2011-2022 走看看