• 关于Dictionary<k,v>绑定DataGridView的问题以及曲线解决办法


    通过查阅资料发现:

    DataGridView的数据源必须是实现以下接口的任意类型:

    (1)IList 接口,包括一维数组。

    (2)IListSource 接口,例如,DataTable和DataSet类。

    (3)IBindingList 接口,例如,BindingList<T>类。

    (4)IBindingListView 接口,例如,BindingSource类。
    MSDN解释
    而Dictionary的类型定义为:
    [SerializableAttribute]
    [ComVisibleAttribute(false)]
    public class Dictionary<TKey,TValue> : IDictionary<TKey,TValue>, ICollection<KeyValuePair<TKey,TValue>>,
    IEnumerable<KeyValuePair<TKey,TValue>>, IDictionary, ICollection, IEnumerable,
    ISerializable, IDeserializationCallback
    并未实现以上接口
    MSDN解释
     
    而今天课程的练习中有的同学,希望使用父类的Dictionary集合绑定DataGridView数据源,没有成功。而使用BindingDataSource又因为集合中的对象是不同子类型而失败。经过考虑我们可以使用如下的方法来解决。
          //定义集合分别存放数据
          Dictionary<string, Vehicle> vehicle=new Dictionary<string,Vehicle> ();//没被出租的车集合
         //……省略添加元素代码……
    
          //将集合中的对象保存到数组,然后将数组作为数据源
          Vehicle[] vehiclesArray = new Vehicle[vehicle.Count];
         vehicle.Values.CopyTo(vehiclesArray,0);
         dgvRent.DataSource = vehiclesArray;
    作者:于为源 出处: http://www.cnblogs.com/yuanyuan/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    用Sqoop实现数据HDFS到mysql到Hive
    hdfs的文件结构
    搭建Hadoop-1.2.1&hbase-0.94.17&hive-0.9.0&centos6.8_x64集群
    缩减表空间碎片
    MySQL8.0.12源码编译安装_centos7.3
    Mysql8.0.18的源码安装
    mysql5.7.31二进制安装_centos7
    个人windows开发环境风格
    linux shell中那些奇奇怪怪的语法
    关于上线的一些事儿
  • 原文地址:https://www.cnblogs.com/yuanyuan/p/2266735.html
Copyright © 2020-2023  润新知