【问题标题】:Load a list from an array从数组中加载列表
【发布时间】:2017-04-29 14:20:33
【问题描述】:

我有一个正在运行的程序,只是我的数据包含在一个数组中;但是,我从你们那里得知我无法从数组中加载 dataGridView。
如果我有这样的代码,我将如何为 dataGridView1 的源加载一个列表...

        // Load some date to indicate what I'm trying to do.

        int nColName = 0;
        int nColNumberOfOccurances = 1;
        int nColTotalTime = 2;
        int nColAverageTime = 3;
        string[,] strMyArray = new string[2,4];

        // load array with test data
        for (int i = 0; i < strMyArray.Length; i++)
        {
            switch (i)
            {
                case 0:
                 strMyArray.SetValue("file1.log".ToString(), i, nColName);
                 strMyArray.SetValue("10".ToString(), i, nColNumberOfOccurances);
                 strMyArray.SetValue("8989".ToString(), i, nColTotalTime);
                 strMyArray.SetValue("898.9".ToString(), i, nColAverageTime);
                 break;
                case 1:
                 strMyArray.SetValue("file2.log".ToString(), i, nColName);
                 strMyArray.SetValue("5".ToString(), i, nColNumberOfOccurances);
                 strMyArray.SetValue("4494.5".ToString(), i, nColTotalTime);
                 strMyArray.SetValue("898.9".ToString(), i, nColAverageTime);
                    break;
            }

        }

        // convert an array like the above into a List so that I can say...
       // myNewListFromArray = strMyArray
      //  dataGridView1.DataSource = myNewListFromArray;

【问题讨论】:

  • 如果将ItemSource 绑定到数据上下文,则可以从List 加载数据网格视图。然后,您需要做的就是在数组上使用 LINQ 表达式 .ToList() 并将其设置为数据上下文。
  • @JayGould 多维数组没有ToList() 方法
  • @MongZhu 哎呀,错过了那个细节。忽略我上面的评论:-)
  • 你能改变它是string [ , ]数组的情况吗?
  • 孟朱;如果您可以提供一个使用数组的示例,该数组允许我创建一个提供创建数组功能的数组,该数组的行在运行时指定,谁的行数在设计时说明并且为空。然后允许扫描结果数组并通过 SetValue 之类的方法设置丢失的数据。

标签: c# arrays winforms list visual-studio-2010


【解决方案1】:

数组适用于DataGridView。您的问题是 - 您使用的二维数组不能用作 DataSource。

创建一个具有代表数据的属性的类,而不是数组。
注意:使用属性很重要,因为DataGridView 绑定仅适用于属性。

public class MyData
{
    public string Name { get; set; }
    public string NumberOfOccurances { get; set; }
    public string TotalTime { get; set; }
    public string AverageTime { get; set; }
}

然后在List中使用这个类

var list = new List<MyData>
{
    new MyData 
    { 
        Name = "file1.log",
        NumberOfOccurances = "10",
        TotalTime = "8989",
        AverageTime = "898.9"
    },
    new MyData 
    { 
        Name = "file2.log",
        NumberOfOccurances = "5",
        TotalTime = "4494.5",
        AverageTime = "898.9"
    },
}

dataGridView1.DataSource = list;

【讨论】:

  • 这里的关键点是带有 propertiesclass(不是字段)。该列表不是非常必要的,类数组也可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 2017-09-17
  • 2023-01-03
  • 2011-07-25
  • 2013-03-15
相关资源
最近更新 更多