Foxtable(狐表)用户栏目专家坐堂 → 通过内部函数生成的目录树,如何增加过虑条件


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

主题:通过内部函数生成的目录树,如何增加过虑条件

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


加好友 发短信
等级:婴狐 帖子:69 积分:797 威望:0 精华:0 注册:2015/1/2 15:58:00
通过内部函数生成的目录树,如何增加过虑条件  发帖心情 Post By:2015/2/9 14:29:00 [显示全部帖子]

一以是帮助文档中的说明:

设计步骤:

1、在内部函数中新建一个函数,名为AddChildren,代码为:

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("标题"))
Functions.Execute(
"AddChildren",cd,dt)

Next

上述代码中,出现了调用AddChildren函数自身的代码(第8行):

Functions.Execute("AddChildren",cd,dt)

这种在函数自己调用自己的情况,就是常说的递归调用。

2、在窗口中加入一个目录树控件和一个按钮,按钮的代码为:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
nd As WinForm.TreeNode
Dim
dt As DataTable = DataTables("A")
tr
.StopRedraw()
tr
.Nodes.Clear
tr
.Nodes.Add("全部")
For
Each dr As DataRow In dt.datarows
If dr.IsNull("
父键") Then
nd = tr.Nodes.Add(dr("
"),dr("标题"))
Functions.Execute("AddChildren",nd,dt)
End If

Next

tr
.ResumeRedraw()


在数据表里面,有一个列名为:"标记",我想生成目录树的时候,过虑掉"标记"列为空值的数据.请问如何实现?


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


加好友 发短信
等级:婴狐 帖子:69 积分:797 威望:0 精华:0 注册:2015/1/2 15:58:00
  发帖心情 Post By:2015/2/9 14:53:00 [显示全部帖子]

非常感谢 有点甜,

再请问.勾选目录树复选框能让表的复选框同时勾选,如何做到?

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


加好友 发短信
等级:婴狐 帖子:69 积分:797 威望:0 精华:0 注册:2015/1/2 15:58:00
  发帖心情 Post By:2015/2/9 15:19:00 [显示全部帖子]

加载窗口时,目录树是以下代码:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("产品信息")
tr.StopRedraw()
tr.Nodes.Clear
tr.Nodes.Add("全部")
For Each dr As DataRow In dt.datarows
    If dr.IsNull("父键") Then
        nd = tr.Nodes.Add(dr("键"),dr("规格型号"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()

请问如何赋值?

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


加好友 发短信
等级:婴狐 帖子:69 积分:797 威望:0 精华:0 注册:2015/1/2 15:58:00
  发帖心情 Post By:2015/2/9 15:31:00 [显示全部帖子]

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("产品信息")
tr.StopRedraw()
tr.Nodes.Clear
tr.Nodes.Add("全部")
For Each dr As DataRow In dt.datarows
    If dr.IsNull("父键") Then
        nd = tr.Nodes.Add(dr("键"),dr("规格型号"))        
        nd.tag = dr  '-------------------------------------------这样好像不行.
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()

 回到顶部