以文本方式查看主题

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

--  作者:采菊东篱下
--  发布时间:2021/2/18 12:41:00
--  目录树

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210218121615.png
图片点击可在新窗口打开查看
如何把这样的表做成安分类生成的不同子节目录树,如这样:
分类
  -月租停车
      -巷
        -号
          -房
分类
  -临时停车
       -车牌号码
我知道只要把数据安一、二、三、四、五级重新整理到相应的列就能实现,但这样会破坏表结构,不方便录入,如何在不破坏表结构下生成要实现的目录树?


 

--  作者:有点蓝
--  发布时间:2021/2/18 13:10:00
--  
参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=132603
--  作者:采菊东篱下
--  发布时间:2021/2/18 20:26:00
--  
我这样写造成主界面窗口无法保存,无法预览,一保存直接死机!未改主界面窗口中的AfterLoad事件代码前,都一直没问题的,改后死机了!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理2021012901.foxdb

密码:888888
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "SELECT [_Identify],分类,住址_序号,住址_巷,住址_号,住址_房,Year(日期) As 年, Month(日期) As 月,户主姓名,手机号码,车牌号码 Fro m {车辆基本信息}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView2")
trv.BuildTree(dt,"住址_巷|住址_号|住址_房|户主姓名|手机号码|车牌号码","[分类] = \'月租停车\'","住址_序号,住址_号,住址_房")
\'trv.Nodes.Insert("加载临时停车数据",0)
trv.Nodes.Insert("月租停车",0)
Do While trv.Nodes.Count > 1
    trv.Nodes(1).MoveRight
Loop
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv2.BuildTree(dt,"年|月|车牌号码","[分类] = \'临时停车\'","年 DESC,月 DESC")
\'trv2.Nodes.Insert("加载临时停车数据",0)
Dim node As WinForm.TreeNode = trv.Nodes.Add("临时停车")
For i As Integer = trv2.Nodes.Count - 1 To 0 Step -1
    Dim nn As WinForm.TreeNode = trv2.Nodes(i)
    trv2.Nodes.RemoveAt(i)
    node.basenode.Nodes.Add(nn.basenode)
Next
\'加载第一页数据
With DataTables("车辆基本信息")
    .LoadFilter = "" \'清除加载条件
    .LoadPage = 0 \'加载第一页
    .LoadTop = 20 \'每页5行
    .LoadOrder = "分类,住址_序号,住址_号,住址_房"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox2").Value = 1 & "/" & .TotalPages
End With


--  作者:有点蓝
--  发布时间:2021/2/18 20:54:00
--  
需要至少2个目录树控件,另外一个可以隐藏,作为过渡使用。

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView2")
……
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeViewxx")

原理很简单,目录树1BuildTree生成月租停车节点后右移到"月租停车"节点里;目录树2BuildTree生成临时停车节点后移到目录树1的“临时停车”节点里
[此贴子已经被作者于2021/2/18 20:57:10编辑过]

--  作者:采菊东篱下
--  发布时间:2021/2/18 21:14:00
--  
另一个目录树是否把可见设为False
--  作者:有点蓝
--  发布时间:2021/2/18 21:26:00
--  
需要至少2个目录树控件,另外一个可以隐藏,作为过渡使用。
--  作者:采菊东篱下
--  发布时间:2021/2/18 21:29:00
--  
我叠加了一个目录树了,把可见性设为False,代码写成这样,还是不能预览。

Dim cmd As New SQLCommand
Dim dt As DataTable
\'cmd.C \'内部数据源,这行代码不需要
cmd.CommandText = "SELECT [_Identify],分类,住址_序号,住址_巷,住址_号,住址_房,Year(日期) As 年, Month(日期) As 月,户主姓名,手机号码,车牌号码 Fro m {车辆基本信息}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView2")
trv.BuildTree(dt,"住址_巷|住址_号|住址_房|户主姓名|手机号码|车牌号码","[分类] = \'月租停车\'","住址_序号,住址_号,住址_房")
\'trv.Nodes.Insert("加载临时停车数据",0)
trv.Nodes.Insert("月租停车",0)
Do While trv.Nodes.Count > 1
    trv.Nodes(1).MoveRight
Loop
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView3")
trv2.BuildTree(dt,"年|月|车牌号码","[分类] = \'临时停车\'","年 DESC,月 DESC")
\'trv2.Nodes.Insert("加载临时停车数据",0)
Dim node As WinForm.TreeNode = trv.Nodes.Add("临时停车")
For i As Integer = trv2.Nodes.Count - 1 To 0 Step -1
    Dim nn As WinForm.TreeNode = trv2.Nodes(i)
    trv2.Nodes.RemoveAt(i)
    node.basenode.Nodes.Add(nn.basenode)
Next
\'加载第一页数据
With DataTables("车辆基本信息")
    .LoadFilter = "" \'清除加载条件
    .LoadPage = 0 \'加载第一页
    .LoadTop = 20 \'每页5行
    .LoadOrder = "分类,住址_序号,住址_号,住址_房"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox2").Value = 1 & "/" & .TotalPages
End With

--  作者:采菊东篱下
--  发布时间:2021/2/18 21:39:00
--  
不叠加,把它上下连接,都设为可见,还是不能预览。
重新打开无法正常打开,显示这个无法消失

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210218213648.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理2021021801.foxdb


[此贴子已经被作者于2021/2/18 23:06:29编辑过]

--  作者:有点蓝
--  发布时间:2021/2/18 21:42:00
--  
测试没有问题,提示什么错误?

另外,目录树的勾选事件代码要需要改的,需要判断 一下勾选的节点是哪一个分类的,然后对应处理那一个分类的加载条件

--  作者:采菊东篱下
--  发布时间:2021/2/18 23:05:00
--  
没有提示,可以保存,就是无法预览,无法正常打开,我改为上面上传的这样又如何实现分页加载呢?感觉分成上下两个目录树,视觉上差不多,但刷新目录树、查找按钮都没用了。