我有一个包含许多列的数据表,就像这样;
Name | Age | Foo | Bar | Etc..
Joe | 30 | foo | bar | Etc..
我现在需要将这个数据表分成两列,只包含标题后跟其值,就像这样;
Header | Value
Name | Joe
Age | 30
Foo | foo
Etc... | etc..
这样,DataBinder可以在数据绑定时轻松访问它。
如何做到这一点,我是否需要这样做?
编辑:包含示例代码
asp.net
<div class="itemDetail col-s">
<div class="itemDetailLabel">
<%# DataBinder.Eval(Container.DataItem, "Caption")%>
</div>
<div class="itemDetailValue">
<%# If(DataBinder.Eval(Container.DataItem, "UIValue") Is Nothing OrElse String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "UIValue").ToString()), " ", DataBinder.Eval(Container.DataItem, "UIValue")) %>
</div>
</div>
vb.net
Dim oldDataTable As DataTable = DataSource ''Which is a datatable of a single row
Dim newDataTable As New DataTable
newDataTable.Columns.Add("Caption")
newDataTable.Columns.Add("UIValue")
''Change the single row into multiple rows
fooControl.DataSource = newDataTable
fooControl.DataBind()
EDIT2:因此,对于那些仍然像我一样学习的人来说,这称为转置。感谢@ gofal3指出
答案 0 :(得分:0)
您必须转置DataTable。据我所知,没有内置方法,但你必须编写自己的代码才能这样做。 但是有很多例子是其他人做的。例如:https://www.codeproject.com/Articles/44274/Transpose-a-DataTable-using-C或Transpose a datatable