【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 2011-04-25
      • 2019-05-22
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      相关资源
      最近更新 更多