使用在运行时生成的列创建GridView

我有一个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; }