【问题标题】:Can I bind multidimensional data to a DataGridView in C# and .NET?我可以在 C# 和 .NET 中将多维数据绑定到 DataGridView 吗?
【发布时间】:2009-01-12 19:43:52
【问题描述】:

我正在寻找开发一个应用程序,其中包含从 DataGridView 子类化的工作表。用户可以将类似 CSV 的数据粘贴(或导入)到工作表中,它将反映在内存中的数据结构中——我的第一个猜测是浮点数的二维数组。

DataGridView 可以绑定到具有特定接口集(即 IList、IListSource 等)的对象,因此理论上我可以创建一个封装 2D 数组并实现其中一个接口的类。然而,令人费解的是接口规范似乎只适用于一维数组——例如参见IList。怎么回事?!

更新: 从答案看来,IList 适合对象列表。那么有没有办法将任意大小(浮点数)的多维数组绑定到 DataGridView?还是用DataGridView本身作为存储浮点数的数据结构可以吗?

【问题讨论】:

    标签: c# .net visual-studio datagridview interface


    【解决方案1】:

    我以前做过类似的事情,here - 在IList 中表示一个二维数组;可能有用。

    【讨论】:

    • 这是个好主意,但不完全是 - 我正在处理可能在任一维度上调整大小的数据,即一列可能像一行一样容易被删除
    • 理论上可以模拟出来,但是网格控件帮不了你。
    【解决方案2】:

    这样想。 IList 可以是对象的集合。然后每个对象可以在其中具有多个属性。所以本质上,这就像一个二维数组。第一个维度是对象,以及它的所有属性,第二个维度是所述对象的集合。像这样的:

    list[0] --> Name, (think of this as list[0]["Name"])
                Age, (think of this as list[0]["Age"])
                Height  (think of this as list[0]["Height"])
    
    
    list[1] --> Name, (think of this as list[1]["Name"])
                Age, (think of this as list[1]["Age"])
                Height  (think of this as list[1]["Height"])
    

    因此,在您的情况下,如果列是固定的,那么您只需要拥有一个封装所有这些字段的对象,然后拥有这些对象的集合,然后将这些对象绑定到 DataGridView。

    如果这没有任何意义,那么我不明白你的问题,我很抱歉。

    【讨论】:

    • 是的,有道理,修改了问题
    【解决方案3】:

    有一个很好的article on CodeProject 展示了如何将二维数组绑定到 DataGridView。

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 2014-03-13
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 2019-07-21
      相关资源
      最近更新 更多