以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树不限级生成优化,如果不生产多余行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=150431)

--  作者:weibu
--  发布时间:2020/5/29 18:58:00
--  目录树不限级生成优化,如果不生产多余行
老师这段代码如何优化,不是生成多行再删除,而是仅生成一条数据
Dim dt As DataTable = DataTables("department")
Dim dic As New Dictionary(of Integer, Integer)
Dim prevLevel As Integer = 0
Dim idxs As String = "-1,"
For Each nd As WinForm.TreeNode In e.Form.Controls("TreeView1").AllNodes
    If nd.Level = 0 AndAlso dic.count > 0 Then
        Dim temp = dic(0)
        dic.Clear
        dic.Add(0, temp)
    End If
    
    If dic.ContainsKey(nd.Level) = False Then
        dic.Add(nd.Level, 1)
    Else
        dic(nd.Level) = dic(nd.Level) + 1
    End If
    For i As Integer = nd.level + 1 To prevLevel
        dic(i) = 0
    Next
    
    prevLevel = nd.Level
    Dim ndr As DataRow
    If nd.DataRow IsNot Nothing Then
        ndr = dt.Find("_Identify = " & nd.DataRow("_Identify"))
    Else
        ndr = dt.AddNew
    End If
    idxs &= ndr("_Identify") & ","
    Dim str As String = ""
    For i As Integer = 0 To nd.Level
        str &= format(dic(i), "000") & "."
    Next
    ndr("departno") = str.TrimEnd(".")
    ndr("department") = nd.Text
Next
 dt.DeleteFor("_Identify not in (" & idxs & ")")

--  作者:有点蓝
--  发布时间:2020/5/30 8:42:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=122759