2016-03-06 51 views
0

我在使用vb.net代碼製作嵌套表生成器時遇到了問題。我有一個數據表存儲與孩子父母ids的一切,它需要代碼遞歸循環,並從用戶輸入動態地建立表。不幸的是,我只能讓它循環並輸出所有數據(不是嵌套的)。我需要幫助「如果(孩子有父母)然後製作嵌套表」並重復。下面的代碼是我必須輸出所有行。它不評估項目是否有父母。這是我需要幫助的。我試過的代碼只能深入一層(不遞歸)。任何幫助,將不勝感激。從數據表結果動態構建嵌套的html表

 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 

任何幫助將是可怕的。停留一段時間。

回答

0

終於明白了。必須是我的第100個猜測....沒想到它會讓我打電話給子本身內的子,但它的工作。移動了表格外的電話,但新的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