2016-12-14 2 views
1

私のデータが配列に含まれている点を除いて、動作するプログラムがあります。しかし、私は配列から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; 
+0

をこのクラスを使用します。次に、あなたの配列に 'LINQ'式' .ToList() 'を使ってdatacontextとして設定するだけです。 –

+1

@JayGould多次元配列のToList()メソッドはありません –

+0

@MongZhu oops、その詳細を逃しました。上記の私のコメントを無視してください: –

答えて

2

配列DataGridViewで動作します。あなたの問題は、DataSourceとして使用できない2次元配列を使用していることです。

arrayの代わりに、データを表すプロパティを持つクラスを作成します。
注:DataGridViewバインディングはプロパティのみで動作するため、というプロパティを使用することが重要です。その後

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

あなたはDataContextのに `ItemSource`をバインドする場合は、` 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; 
+0

ここで重要な点は、**クラス**と**プロパティ**(フィールドではない)です。リストは強く必要ではない、クラスの配列も動作します。 –

関連する問題