2011-01-14 5 views
2

런타임에 열이 프로그래밍 방식으로 생성되는 DataTable이 있습니다. 그런 다음이 DataTable을 GridView에 바인딩합니다. 내가 궁금해하는 건, 이걸 수용 할 수있는 GridView를 어떻게 만들 수 있는지, 불가능하다면 DataTable을 멋지게 형식화 된 HTML로 출력하는 방법이다.런타임에 생성 된 열이있는 GridView 만들기

답변

8

GridView는이 목적으로 AutogenerateColums 속성을 가지고 있습니다.

VB.NET

Dim tbl As New DataTable 
tbl.Columns.Add("ID", GetType(Int32)) 
tbl.Columns.Add("Name", GetType(String)) 
tbl.Columns.Add("Birthday", GetType(Date)) 
Dim pers As DataRow = tbl.NewRow 
pers("ID") = 1 
pers("Name") = "Tim" 
pers("Birthday") = New Date(1973, 6, 9) 

사용 AutoGenerateColumns 그리드 열 자체 생성 할 수 있도록 :

Me.GridView1.AutoGenerateColumns = True 
Me.GridView1.DataSource = tbl 
Me.GridView1.DataBind() 

또는 동적으로 열을 생성 또한 예를 들어, 즉석에서 열을 생성 할 수

For Each col As DataColumn In tbl.Columns 
    Dim field As New BoundField 
    field.DataField = col.ColumnName 
    field.HeaderText = col.ColumnName 
    GridView1.Columns.Add(field) 
Next 

C#

foreach (DataColumn col in dt.Columns) 
{  
    BoundField field = new BoundField(); 
    field.DataField = col.ColumnName; 
    field.HeaderText = col.ColumnName; 
    GridView1.Columns.Add(field); 
} 
+0

새 열의 데이터 소스가 GridView의 기본 데이터 소스가 아닌 다른 곳에서 온 경우 어떻게해야합니까? DataBind 전에 gridview에 하나의 데이터 소스 만 있어야합니까? – Fandango68

+0

@ Fernando68 : 죄송합니다. 귀하의 요구 사항을 이해하지 못합니다. 어쩌면 진짜 질문을 만들고 필요한 모든 정보를 제공하는 것이 가장 좋습니다. 그럼 내가 대답하려고 할 수있어. 여기에 대한 질문에 대한 링크를 추가하여 알려줄 수 있습니다. –

+0

http://stackoverflow.com/questions/35307156/gridview-how-to-add-columns-based-on-data-from-a-separate-data-source – Fandango68

1

DataTable을 Gridview의 DataSource로 설정할 수 있어야합니다. GridView에는 AutoGenerateColumns 속성이 있습니다. 바인딩을 수행하기 전에 true으로 설정했는지 또는 직접 수동으로 열을 미리 만드는지 확인하십시오.

1

다른 답변으로이 문제가 해결되지 않았기 때문에 사용자 정의 열이있는 GridView를 프로그래밍 방식으로 설정하는 방법이 있습니다.

private GridView SetUpGrid() 
    { 
     GridView GView = new GridView(); 

     GView .ColumnHeaderToolTip = "MyToolTip"; 

     GridViewColumn gvc1 = new GridViewColumn(); 
     gvc1.DisplayMemberBinding = new Binding("Col1Name"); 
     gvc1.Header = "Column One"; 
     gvc1.Width = Double.NaN; // Auto-Size 
     GView .Columns.Add(gvc1); 
     GridViewColumn gvc2 = new GridViewColumn(); 
     gvc2.DisplayMemberBinding = new Binding("Col2Name"); 
     gvc2.Header = "Column Two"; 
     gvc2.Width = Double.NaN; 
     GView .Columns.Add(gvc2); 
     GridViewColumn gvc3 = new GridViewColumn(); 
     gvc3.DisplayMemberBinding = new Binding("Col3Name"); 
     gvc3.Header = "Column Three"; 
     gvc3.Width = Double.NaN; 
     GView .Columns.Add(gvc3); 
     GridViewColumn gvc4 = new GridViewColumn(); 
     gvc4.DisplayMemberBinding = new Binding("Col4Name"); 
     gvc4.Header = "Column Four"; 
     gvc4.Width = Double.NaN; 
     GView .Columns.Add(gvc4); 

     return GView; 
    } 
+1

웹 컨트롤에 GridViewColumn이 없습니다. – Fandango68

관련 문제