2011-12-09 4 views
-2

테이블을 동적으로 만들고 싶습니다. 이 테이블이 들어갈 공간이 제한되어 있으므로 최대 행을 10으로 설정하고 싶습니다.C# 동적 테이블

첫 번째 두 열은 채워질 것입니다. 열이 10이되면 다른 두 열이 채워져 다른 열 10 개가 채워집니다 다른 두 개의 열을 만드는 등의 작업을 수행 할 수 있습니다.

어떻게해야합니까? 또는 루프를 수행하는 가장 좋은 방법은 무엇입니까?

+9

무슨 말씀 이세요? 데이터베이스 테이블? HTML 테이블? 아니면 winforms, silverlight, wpf ... 당신의 질문은 분명하지 않습니다. 정교하고 정확하게 설명하십시오. 그렇지 않으면 아무도 도움을 줄 수 없습니다. –

+0

WinForms에 있나요? WPF? 실버 라이트? 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 

그렇다면

로, 여기 당신이 작업을 수행 할 수 방법은 다음과 같습니다

먼저 I가 클래스를 사용 다음과 같이 각 데이터 항목 쌍 (예 : A, 1)을 포함합니다.

class DataElement 
    { 
     public string Value1 { get; set; } 
     public string Value2 { get; set; } 
    } 
01 23,516,

가 나는 목록을 받아와 형식의 테이블로 변환하는 도우미 기능 내장 :

마지막으로
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 열을 사용했습니다. 이것은 분명히 약간 정리 될 수 있지만 그것이 당신이 원하는 것으로 가정합니다. 상수를 가져 와서 메서드 매개 변수가 될 수 있고 표준 배열을 사용하여 목록을 변경하여 높은 유연성을 제공 할 수 있으므로 임의의 크기의 테이블과 열 수를 사용할 수 있지만 필요한 경우이를 그대로 남겨 두겠습니다.