我有一個DataTable,其中的列是在運行時以編程方式生成的。然後,我將這個DataTable綁定到一個GridView。我想知道的是如何創建GridView來適應這種情況,如果不可能,我怎樣才能將DataTable輸出爲格式良好的HTML。使用在運行時生成的列創建GridView
2
A
回答
8
GridView有一個AutogenerateColums -property用於此目的。 你也可以動態生成列,例如:
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);
}
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. GridView列創建 - 生成 - 什麼時候?
- 2. Python:在運行時創建生成器
- 3. 使用在運行時生成的元素創建AlertDialog
- 4. 在運行時使用一組值創建多個生成的下拉列表
- 5. 如何在.NET中創建,生成用於在運行時
- 6. 在運行時創建成員的類
- 7. 如何在運行時創建QGridLayout並動態生成行?
- 8. 在Android中構建/使用運行時生成的佈局XML
- 9. 如何創建將自動生成Gridview每行的序列號的列?
- 10. 如何在運行時使用java在android中生成和添加gridview?
- 11. 使用Delphi在運行時創建TWebBrowser
- 12. 在運行時使用UIGestureRecognizer創建UIImage
- 13. 在運行時生成
- 14. 在運行時創建JMS隊列
- 15. Sidekiq在運行時創建隊列
- 16. 運行時語法產生創建
- 17. 如何使用在運行時生成的描述/值創建MVC4複選框列表
- 18. 在運行時隱藏GridView列
- 19. 在運行時向ASP.NET GridView添加列
- 20. 使用生成器創建列表時Python SyntaxError
- 21. 在運行時使用CodeDom.CompilerResults生成程序集(.dll)時生成清單
- 22. 在運行時創建Tframes:
- 23. 在運行時創建TRadioGroup
- 24. 在運行時創建XML
- 25. 創建它在運行時
- 26. 在運行時創建TabView?
- 27. 在運行時創建TextBlock
- 28. 在運行時創建類
- 29. 在運行時創建類
- 30. 在運行時生成可執行jar
如果新列的數據源來自GridView的主數據源以外的其他位置,該怎麼辦?在DataBind之前,gridview是不是隻有一個數據源? – Fandango68 2016-02-10 04:42:57
@ Fernando68:對不起,我不瞭解你的要求。也許最好創建一個真正的問題並提供所有必要的信息。然後我可以嘗試回答。你可以在這裏添加一個問題鏈接來通知我。 – 2016-02-10 08:17:49