以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 建立目录树 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157738) |
-- 作者:newsun2k -- 发布时间:2020/10/27 11:47:00 -- 建立目录树 不知道为何报错了,感觉没啥问题啊? 编码 名称 父编码 001 文件1 Root 002 文件2 001 003 文件3 002 004 文件4 Root 窗口中调用 Functions.Execute("com创建目录树","Root","共享文件夹","") 函数【com创建目录树】 Dim TreeView1 As WinForm.TreeView = Forms("窗口1").Controls("TreeView1") Dim strNewNodeCode As String = args(0) Dim strNewNodeName As String = args(1) Dim strFatherNodeCode As String = args(2) Dim cmd As New SQLCommand cmd.ConnectionName = “连接1” Dim dt As DataTable Dim strFilter As String Dim dr As DataRow If strNewNodeCode = "Root" Then If TreeView1.nodes.Contains(strNewNodeCode) = False Then TreeView1.nodes.Add(strNewNodeCode,strNewNodeCode,"floder.png") \'建第一级目录 Else If TreeView1.nodes(strFatherNodeCode).nodes.Contains(strNewNodeCode) = False Then \'此处报错 未将对象引用设置到对象的实例。 TreeView1.nodes(strFatherNodeCode).nodes.Add(strNewNodeCode,strNewNodeCode,"floder.png") \'建当前目录 End If End If strFilter = " where 父编码 = \'" & strNewNodeCode & "\'" \'建当前目录的全部子目录 cmd.CommandText = "sele ct 编码,名称,父编码 from 表a " & strFilter dt = cmd.ExecuteReader() For Each dr1 As DataRow In dt.DataRows Functions.Execute("com创建目录树",dr1("编码"),dr1("名称"),strNewNodeCode) Next |
-- 作者:有点蓝 -- 发布时间:2020/10/27 12:07:00 -- args(2)传入的是一个空字符串,这个节点肯定是不存在的啊:TreeView1.nodes(strFatherNodeCode)。节点肯定要有名称才能访问的 |
-- 作者:newsun2k -- 发布时间:2020/10/27 13:02:00 -- 就第一次调用的时候,这个args(2)是空字符串,后面调用都有的。 第一次调用创建一个root节点,有个判断的。所以没出错。
|
-- 作者:有点蓝 -- 发布时间:2020/10/27 13:44:00 -- 就算传入其它名称,也有可能不存在,先判断一下 If TreeView1.nodes.Contains(strFatherNodeCode) andalso TreeView1.nodes(strFatherNodeCode).nodes.Contains(strNewNodeCode) = False Then
|
-- 作者:有点蓝 -- 发布时间:2020/10/27 13:45:00 -- Elseif TreeView1.nodes.Contains(strFatherNodeCode) If TreeView1.nodes(strFatherNodeCode).nodes.Contains(strNewNodeCode) = False Then \'此处报错 未将对象引用设置到对象的实例。 TreeView1.nodes(strFatherNodeCode).nodes.Add(strNewNodeCode,strNewNodeCode,"floder.png") \'建当前目录 End If End If
|
-- 作者:newsun2k -- 发布时间:2020/10/27 13:58:00 -- 哦哦哦,应该查到问题了。 TreeView1.nodes(strFatherNodeCode).nodes.Add(“k123”,strNewNodeCode,"floder.png") ’创建k123节点 再次引用时,TreeView1.nodes(“k123”)这个时候报错,说k123不存在。 需要带上父节点才能引用? 改成这样: If strNewNodeCode = "Root" Then If TreeView1.nodes.Contains(strNewNodeCode) = False Then TreeView1.nodes.Add(strNewNodeCode,strNewNodeCode,"floder.png") \'建第一级目录 Else if TreeView1.nodes.Contains(strFatherNodeCode) then If TreeView1.nodes(strFatherNodeCode).nodes.Contains(strNewNodeCode) = False Then \'此处报错 未将对象引用设置到对象的实例。 TreeView1.nodes(strFatherNodeCode).nodes.Add(strNewNodeCode,strNewNodeCode,"floder.png") \'建当前目录 msgbox(strNewNodeCode & "已加入!") End If else msgbox(strFatherNodeCode & "不存在!") end if End If 提示信息为: --------------------------- zddIP.Function --------------------------- WJJ2000000004已加入! --------------------------- 确定 --------------------------- --------------------------- zddIP.Function --------------------------- WJJ2000000004不存在! --------------------------- 确定 --------------------------- |
-- 作者:有点蓝 -- 发布时间:2020/10/27 14:07:00 -- TreeView1.nodes(strFatherNodeCode).nodes.Add(“k123”, -- 是加到第二级节点 TreeView1.nodes(“k123”)是第一级节点,肯定出错啊
|
-- 作者:newsun2k -- 发布时间:2020/10/27 14:14:00 -- 嗯嗯,那咋整?我要引用"k123",它完整的父节点结构不知道了啊。咋引用? |
-- 作者:有点蓝 -- 发布时间:2020/10/27 14:23:00 -- 加上父节点的完整引用 |