我有数据集ds填充了值到现在为止我在GridView中显示值。现在我想要所有行应该是列,列应该是行。
我有两个选项: 1 我可以直接将网格转换为列并显示它,或者 2 我可以将GridView转换为html,然后编写循环进行转换。我正在尝试第二种选择,但我无法弄清楚我应该怎么做。以下是我的代码:
For Each dr In dt.Rows
htmlTable = htmlTable + "<TR>"
For Each dc In dt.Columns
htmlTable = htmlTable + "<TD>" + ds.Tables(0).Columns(j).ToString() + ""
j = j + 1
Next
i = i + 1
Next
使用此代码,我仍然与GridView相同。请帮我将行转换为列,反之亦然。
答案 0 :(得分:1)
看起来您尝试从DataSet中的DataTable编写HTML表,翻转行和列。你发布的代码有几个问题,所以我更多地使用它作为我的答案的伪代码。
你得到与GridView相同的东西(就行和列而言)是因为你循环遍历每一行,并且在每一行中循环遍历所有列 - 你不是在翻转列和行一点都不。
尝试这样的事情:
Dim htmlTable As StringBuilder = new StringBuilder()
Dim numberRows As Integer = ds.Tables(0).Rows.Count - 1
Dim numberCols As Integer = ds.Tables(0).Columns.Count - 1
htmlTable.Append("<table>")
' Loop through each column first
For i As Integer = 0 To numberCols
htmlTable.Append("<tr>")
' Now loop through each row, getting the current columns value
' from each row
For j As Integer = 0 To numberRows
htmlTable.Append("<td>")
htmlTable.Append(ds.Tables(0).Rows(j)(i))
htmlTable.Append("</td>")
Next
htmlTable.Append("</tr>")
Next
htmlTable.Append("</table>")
' To get the value of the StringBuilder, call ToString()
Dim resultHtml = htmlTable.ToString()
例如,如果您有这样的表:
col1 col2 col3
a b c
d e f
g h i
j k l
结果将是:
a d g j
b e h k
c f i l