[英]Creating a GridView with columns generated at runtime
我有一個DataTable,其中列是在運行時以編程方式生成的。 然后我將此DataTable綁定到GridView。 我想知道的是我如何創建GridView以適應這一點,如果不可能,我如何將DataTable輸出到格式良好的HTML中。
為此,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);
}
您應該能夠將DataTable設置為gridview的DataSource。 GridView具有AutoGenerateColumns
屬性。 在執行綁定之前,請確保將其設置為true
或手動預先創建列。
僅僅因為其他答案沒有涵蓋這一點,這里是如何以編程方式設置帶有自定義列的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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.