2011-12-09 18 views
-2

動的にテーブルを作成したいと思います。このテーブルが収まる場所は限られていますので、最大行を10に設定したいと考えています。C#動的テーブル

最初の2つの列には10がヒットし、別の2つの列に10の行が追加されます別の2つの列などを作成します。

私はこれをやり遂げることができますか、どのようなループを行うための最良の方法となるでしょうか?

+9

あなたはどういうことを言っていますか?データベーステーブル? HTMLテーブルですか?または、おそらくwinforms、silverlight、wpf ...あなたの質問は全く明確ではありません。精緻化して正確に説明してください。そうでなければ誰もあなたを助けません。 –

+0

これはWinFormsでですか? WPF? Silverlight? ASP.Net HTML? XNA? wxWidgets? ...これはあなたが必要とする答えに非常に影響します。 –

+0

申し訳ありません、そのASP.NET、C#のテーブル。 – Boomerang

答えて

1

私はあなたが彼のフォームからデータを翻訳したいと思う:

A 1 
B 2 
C 3 
D 4 
E 5 
F 6 
G 7 

A 1 D 4 G 7 
B 2 E 5 
C 3 F 6 

にもしそうなら、ここにあなたがそれを達成できた方法は次のとおりです。

まず私はしたクラスを使用しました次のようにデータ項目(A、1など)の各ペアを含めます。

class DataElement 
    { 
     public string Value1 { get; set; } 
     public string Value2 { get; set; } 
    } 

その後、私はリストを受け取り、あなたの形式のテーブルに変換ヘルパー関数を構築しました:

private const int MaxRows = 3; //Configure how many Rows in the table 
    private const int NumColsPerElement = 2; //Configure how many columns per element 

    static System.Data.DataTable BuildTabularTableElements(List<DataElement> elements) 
    { 
     System.Data.DataTable dt = new System.Data.DataTable(); 

     int columnCount = (((elements.Count + MaxRows - 1)/MaxRows)) * NumColsPerElement;   

     for (int x = 0; x < columnCount; x++) //Add enough columns 
      dt.Columns.Add(); 

     for (int x = 0; x < Math.Min(MaxRows, elements.Count); x++) //Add enough rows 
      dt.Rows.Add(); 
     for (int x = 0; x < elements.Count; x++) 
     { 
      int curCol = (x/MaxRows) * NumColsPerElement; //Determine the current col/row 
      int curRow = x % MaxRows; 

      dt.Rows[curRow][curCol] = elements[x]First you need a.Value1; //Place the data in the correct row/column 
      dt.Rows[curRow][curCol+1] = elements[x].Value2; 
     } 
     return dt; 
    } 

最後にテストするために、この使用:私はどのように多くを制御するために、定数を使用

 List<DataElement> e = new List<DataElement>(); 
     e.Add(new DataElement() { Value1 = "1", Value2 = "2" }); 
     e.Add(new DataElement() { Value1 = "3", Value2 = "4" }); 
     e.Add(new DataElement() { Value1 = "5", Value2 = "6" }); 
     e.Add(new DataElement() { Value1 = "7", Value2 = "8" }); 

     System.Data.DataTable dt = BuildTabularTableElements(e); 

お知らせ行と列を使用します。私の例では、データ要素ごとに3行最大と2列を使用しました。これは確かに少しきれいにすることができますが、それは私があなたが望むと思うものを行います。あなたは定数を取り込んでメソッドのパラメータにすることができ、リストを変更して標準の配列を使って高い柔軟性を持たせることで、任意のサイズのテーブルやカラム数を使用することができます。