【问题标题】:Dynamically build nested html table from datatable results从数据表结果动态构建嵌套的 html 表
【发布时间】:2016-03-06 22:50:59
【问题描述】:
我在使用 vb.net 代码制作嵌套表生成器时遇到了麻烦。我有一个数据表,它存储所有带有子父 ID 的内容,它需要代码递归循环并从用户输入动态构建表。不幸的是,我只能让它循环并输出所有数据(不是嵌套的)。我需要“如果(孩子有父母)然后制作嵌套表”的帮助并重复。下面的代码是我必须输出所有行的代码。它不评估项目是否有父母。这就是我需要帮助的。我尝试过的代码只会深入一层(不是递归的)。任何帮助将不胜感激。
Public Sub tablebuilder(ByRef tDataTable As DataTable)
Response.Write("<table>")
Response.Write("<tr><th><Child></th><th><Parent></th></tr>")
For Each row As DataRow In tDataTable.Rows
Response.Write("<tr><td>row.Item("IMA_ItemName_CHILD").ToString</td>")
Response.Write("<td>row.Item("IMA_ItemName_PARENT").ToString</td></tr>")
Next
Response.Write("</table>")
End Sub
任何帮助都会很棒。坚持了一段时间。
【问题讨论】:
标签:
html
vb.net
recursion
datatable
【解决方案1】:
终于明白了。一定是我的第 100 次猜测....不认为它会让我在 sub 本身内部调用 sub,但它起作用了。将表调用移到外面,但新的 tr 在正确的位置(嵌套)
Public Sub MakeSimpleTable(ByRef pDataTable As DataTable, ByRef viewer As String)
Response.Write("<tr>")
Response.Write("<th>Parent Id</th>")
Response.Write("<th>Parent Name</th>")
Response.Write("<th>QPA</th>")
Response.Write("</tr>")
Dim sortOrder As String = "IMA_ItemID_PARENT ASC"
Dim rows() As DataRow = pDataTable.Select("IMA_ItemID_CHILD = '" & viewer & "'", sortOrder)
Dim CP() As DataRow
For Each row As DataRow In rows
RowBuilder(row)
viewer = row.Item("IMA_ItemID_PARENT").ToString
CP = pDataTable.Select("IMA_ItemID_CHILD = '" & viewer & "'", sortOrder)
If (CP.Length > 0) Then
MakeSimpleTable(pDataTable, viewer)
End If
Next
End Sub
Public Sub RowBuilder(ByRef row As DataRow)
Response.Write("<tr>")
Response.Write("<td>")
Response.Write(row.Item("IMA_ItemID_PARENT").ToString)
Response.Write("</td>")
Response.Write("<td>")
Response.Write(row.Item("IMA_ItemName_PARENT").ToString)
Response.Write("</td>")
Response.Write("<td>")
Response.Write(row.Item("PST_QtyPerAssy").ToString)
Response.Write("</td>")
Response.Write("</tr>")
End Sub
Public Sub CreateSearch()
Dim mySQL As String = "editted"
Dim myTable_Items As DataTable = GetData(mySQL)
Dim viewer As String = mySearch
viewer = mySearch
Response.Write("You searched ")
If Len(mySearch) > 0 Then Response.Write(mySearch) Else Response.Write("everything.")
Response.Write("<br /><br />")
Response.Write("<table border = '1'>")
MakeSimpleTable(myTable_Items, viewer)
Response.Write("</table>")
End Sub