非职业程序员,或许这个问题比较弱,但就所知所查,没有结果,请赐教试图用递归输出多层目录结构,用DATASET导入数据库后(DS变量),用DATAVIEW过滤需要的结果集显示。函数结构为: Function GetCataList(ByVal CataID As Integer) As String
Dim s As String
Dim i, count As Integer
Dim DV As New DataView
s = ""
DV = DS.Tables(0).DefaultView
DV.RowFilter = "dirid='" & CataID & "'"
DV.Sort = "orders"
count = DV.Count
If count = 0 Then
Return ""
End If
s &= "<ul>"
For i = 0 To count - 1
s &= "<li>" & DV.Item(i).Item("name")
s &= GetCataList(DV.Item(i).Item("ID"))
s &= "<li>"
Next
s &= "</ul>"
DV.Dispose()
GetCataList = s
End Function从DEBUG可以发现,深入内层没有问题,但碰到
If count = 0 Then
Return ""
End If
之后再跳返回上层,却出现了上层DV(DATAVIEW)变量中表数据丢失的情况.之前写过SQL存储过程版的递归都没碰到过类似的问题,请问问题出在哪里.
Dim s As String
Dim i, count As Integer
Dim DV As New DataView
s = ""
DV = DS.Tables(0).DefaultView
DV.RowFilter = "dirid='" & CataID & "'"
DV.Sort = "orders"
count = DV.Count
If count = 0 Then
Return ""
End If
s &= "<ul>"
For i = 0 To count - 1
s &= "<li>" & DV.Item(i).Item("name")
s &= GetCataList(DV.Item(i).Item("ID"))
s &= "<li>"
Next
s &= "</ul>"
DV.Dispose()
GetCataList = s
End Function从DEBUG可以发现,深入内层没有问题,但碰到
If count = 0 Then
Return ""
End If
之后再跳返回上层,却出现了上层DV(DATAVIEW)变量中表数据丢失的情况.之前写过SQL存储过程版的递归都没碰到过类似的问题,请问问题出在哪里.
Dim s As String
Dim i, count As Integer
Dim DV As New DataView
s = ""
DV = DS.Tables(0).Copy().DefaultView'这里改一下
DV.RowFilter = "dirid='" & CataID & "'"
DV.Sort = "orders"
count = DV.Count
If count = 0 Then
Return ""
End If
s &= "<ul>"
For i = 0 To count - 1
s &= "<li>" & DV.Item(i).Item("name")
s &= GetCataList(DV.Item(i).Item("ID"))
s &= "<li>"
Next
s &= "</ul>"
DV.Dispose()
GetCataList = s
End Function