将GridView表转换为Html表,但行应为列,列应为行

时间:2011-08-18 10:57:40

标签: asp.net vb.net gridview .net-3.5 html-table

我有数据集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相同。请帮我将行转换为列,反之亦然。

1 个答案:

答案 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