Foxtable(狐表)用户栏目专家坐堂 → 请教递归函数生成的目录树,编辑后的定位问题


  共有2951人关注过本帖树形打印复制链接

主题:请教递归函数生成的目录树,编辑后的定位问题

帅哥哟,离线,有人找我吗?
sloyy
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13810 威望:0 精华:2 注册:2012/2/25 10:59:00
请教递归函数生成的目录树,编辑后的定位问题  发帖心情 Post By:2015/7/28 1:00:00 [只看该作者]

我用递归函数根据单位表生成了一个目录树,现在选定一个单位,在单位编辑窗的副本表中对该条记录进行编辑,然后将编辑后的数据保存到该条记录上。在保存数据后,自动重新定位到节点A,并自动展开该节点,结果出现错误.

图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20150728004949.png
图片点击可在新窗口打开查看

部门递归函数:
Dim nd As WinForm.TreeNode = Args(0)
Dim dt As DataTable = Args(1)
Dim drs As List(Of DataRow)
drs = dt.Select("[上级编码] = " & nd.Name)
For Each dr As DataRow In drs
    Dim cd As Winform.TreeNode = nd.Nodes.Add(dr("本级编码"),"[" &dr("单位编码") &"]"  &dr("单位名称"))
    Functions.Execute("部门递归函数",cd,dt)
Next

生成的目录树:

图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20150728005147.png
图片点击可在新窗口打开查看

定位展开节点:
Dim sc As Integer =Tables("单位表").Current("本级编码")
Dim tv As WinForm.TreeView = Forms("主窗口").Controls("TreeView2")
For Each nd As WinForm.TreeNode In tv.AllNodes
    If nd.DataRow("本级编码") =sc  Then
        tv.SelectedNode = nd
        nd.EnsureVisible
    End If
Next

结果在红字处出现错误:

   "未将对象引用设置到对象的实例。"
定位展开这段我是根据 LSY版主的一个例子改编的
请教各位:是不是递归函数的目录树和别的目录树不同?这句该怎么写?




 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/28 9:36:00 [只看该作者]

递归生成的不能用DataRow属性。

 

直接写 If nd.Name = sc Then


 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13810 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2015/7/29 0:23:00 [只看该作者]

好的,我试试

 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13810 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2015/7/29 0:50:00 [只看该作者]

测试通过,非常完美的解决了目录树编辑后的定位问题

 回到顶部