以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  目录树加载代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=58814)

--  作者:feiyu988
--  发布时间:2014/10/24 13:02:00
--  目录树加载代码

目录树的分布加载代码提示:未找到列 [WZ]。WZ是第一级编码,不知道问题出在哪里了。

 

 

Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinForm.ComboBox
cmd.CommandText = "SELECT Distinct * From {物资字典}"
dt = cmd.ExecuteReader()
Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
tv.Nodes.Clear

For Each dr As DataRow In dt.Select("上级编号 Not In (" & dt.GetComboListString("物资编码").Replace("|",",") & ")")
    tv.Nodes.Add(dr("物资编码"),dr("物资名称"))
Next
\'Dim nd As WinForm.TreeNode
For Each nd As WinForm.TreeNode In tv.Nodes
    For Each dr As DataRow In dt.Datarows
        If dr("上级编号") = nd.Name Then
            nd = tv.Nodes.Add(dr("物资编码"),dr("物资名称"))
        End If
    Next
Next

 

 


--  作者:程兴刚
--  发布时间:2014/10/24 13:16:00
--  

看看这一句是不是应该这样(未测试,瞎蒙):

For Each dr As DataRow In dt.Select("上级编号 Not In {""" & dt.GetComboListString("物资编码").Replace("|",""",""") & """}")


--  作者:feiyu988
--  发布时间:2014/10/24 13:23:00
--  
提示:无法解释13位置的{
--  作者:程兴刚
--  发布时间:2014/10/24 13:29:00
--  

For Each dr As DataRow In dt.Select("上级编号 Not like \'*" & dt.GetComboListString("物资编码") & "*\'")


--  作者:feiyu988
--  发布时间:2014/10/24 13:48:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb

目录树生成了,但是没有分级


--  作者:有点甜
--  发布时间:2014/10/24 14:19:00
--  

分层目录树这样做。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb


--  作者:feiyu988
--  发布时间:2014/10/24 14:34:00
--  

节点单击事件如何修改才能让筛选出的数据只显示末级数据,而不是连中间的分类级别也显示出来呢。

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
If e.Node.Name = "全部" Then
    DataTables("物资字典").LoadFilter = ""
Else
    DataTables("物资字典").LoadFilter = "上级编号 Like \'" & e.Node.Name & "%\'"
End If

DataTables("物资字典").Load


--  作者:有点甜
--  发布时间:2014/10/24 15:07:00
--  

 需要额外处理一下,加入一列最末级列,用下面代码设置得出最末级

 

For Each dr As DataRow In DataTables("物资字典").SQLSelect("")
    If DataTables("物资字典").SQLFind("上级编号 = \'" & dr("物资编码") & "\'") Is Nothing Then
        dr("最末级") = True
    Else
        dr("最末级") = False
    End If
    dr.save
Next
DataTables("物资字典").LoadFilter = ""
DataTables("物资字典").Load


--  作者:feiyu988
--  发布时间:2014/10/24 15:33:00
--  
数据太多了,用这段代码直接就停止响应了,能不能在筛选出的数据上再次筛选
--  作者:有点甜
--  发布时间:2014/10/24 16:03:00
--  

如果数据过多,用下面代码,一次性赋值以后

 

DataTables("物资字典").LoadFilter = ""
DataTables("物资字典").Load

For Each dr As DataRow In DataTables("物资字典").DataRows
    If DataTables("物资字典").Find("上级编号 = \'" & dr("物资编码") & "\'") Is Nothing Then
        dr("最末级") = True
    Else
        dr("最末级") = False
    End If  
Next