以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 五级目录树的建立 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122759) |
||||
-- 作者:weibu -- 发布时间:2018/8/1 17:46:00 -- 五级目录树的建立 “编辑目录树之二”是三级目录树的建立,请问五级目录树的下列代码应如何修改 5、“增加子节点”按钮的Click事件代码: Dim tr As
WinForm.TreeView 6、“删除”按钮的Click事件代码: Dim tr As WinForm.TreeView
= e.Form.Controls("TreeView1") 7、目录树AfterEditNode事件代码: If
e.NewText = "" Then |
||||
-- 作者:有点甜 -- 发布时间:2018/8/1 17:49:00 -- 建议用这种方式处理
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=99022&replyID=682089&skin=1
|
||||
-- 作者:weibu -- 发布时间:2020/5/29 18:50: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:41:00 -- 2楼这种用法不适合改为一条数据。 还是以“编辑目录树之二”为例,比如再多一级: 2、窗口的AfterLoad事件代码为: Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1") 5、“增加子节点”按钮的Click事件代码: Dim tr As WinForm.TreeView ElseIf nd.Level = 2 dr("二类") = nd.ParentNode.Text 6、“删除”按钮的Click事件代码: Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1") Case 3 End Select |
||||
-- 作者:weibu -- 发布时间:2020/5/30 8:45:00 -- 蓝老师,这种方法目录树的层级就收到限制了。我这边是想做部门的目录层级。部门目录树估计能达9级左右。 [此贴子已经被作者于2020/5/30 8:53:38编辑过]
|
||||
-- 作者:weibu -- 发布时间:2020/5/30 8:51:00 -- 我现在的想的最优方案,一条数据包含上级部门这个字段。通过上级部门这个字段能否生产无限极目录树? |
||||
-- 作者:有点蓝 -- 发布时间:2020/5/30 9:38:00 -- 使用递归:http://www.foxtable.com/webhelp/topics/2416.htm |
||||
-- 作者:weibu -- 发布时间:2020/5/30 15:29:00 -- 老师生产目录树的表和编辑下拉窗口所在的表是同一张表。 在NodeMouseClick设置下列代码,点击目录树后提示“未将对象引用设置到对象的实例。” Dim tr As Row = Tables("department").Current Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow tr("parent") = dr("departname") tr("parentID") = dr("departID") e.Form.DropDownBox.Value = tr("departname") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据. e.Form.DropDownBox.CloseDropdown()
|
||||
-- 作者:有点蓝 -- 发布时间:2020/5/30 15:31:00 -- 判断一下有没有值 Dim tr As Row = Tables("department").Current if tr is nothing then return Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow if dr isnot nothing then tr("parent") = dr("departname") tr("parentID") = dr("departID") e.Form.DropDownBox.Value = tr("departname") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据. e.Form.DropDownBox.CloseDropdown() end if [此贴子已经被作者于2020/5/30 16:01:37编辑过]
|
||||
-- 作者:weibu -- 发布时间:2020/5/30 15:41:00 -- 老师修改后点击某个目录树某个节点没反应。Dim tr As Row = Tables("department").Current ,department表取数据生产的目录树tree1。现在点击department的上级部门列,出来下拉窗口中的目录树就是tree1。 这样是不是不行? 就是希望点击部门信息表中的“上级部门”可以达到代码中的赋值 老师还希望目录树中的排列顺序按排序号值进行排序。 事列:
[此贴子已经被作者于2020/5/30 15:48:54编辑过]
|