以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 通过内部函数生成的目录树,如何增加过虑条件 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64267) |
-- 作者:able -- 发布时间:2015/2/9 14:29:00 -- 通过内部函数生成的目录树,如何增加过虑条件 一以是帮助文档中的说明: 设计步骤: 1、在内部函数中新建一个函数,名为AddChildren,代码为: Dim nd As WinForm.TreeNode = args(0) 上述代码中,出现了调用AddChildren函数自身的代码(第8行): Functions.Execute("AddChildren",cd,dt) 这种在函数自己调用自己的情况,就是常说的递归调用。 2、在窗口中加入一个目录树控件和一个按钮,按钮的代码为: Dim tr As WinForm.TreeView =
e.Form.Controls("TreeView1") 在数据表里面,有一个列名为:"标记",我想生成目录树的时候,过虑掉"标记"列为空值的数据.请问如何实现? |
-- 作者:Bin -- 发布时间:2015/2/9 14:31:00 -- drs = dt.Select("[父键] = \'" & nd.name & "\' and 标记 is not null")
|
-- 作者:Bin -- 发布时间:2015/2/9 14:31:00 -- For Each dr As DataRow In dt.datarows 也改为 For Each dr As DataRow In dt.Select("标记 is not null")
|
-- 作者:有点甜 -- 发布时间:2015/2/9 14:32:00 -- 1、 drs = dt.Select("[父键] = \'" & nd.name & "\'")
改成
drs = dt.Select("[父键] = \'" & nd.name & "\' and 标记 is not null")
2、
If dr.IsNull("父键") Then
改成
If dr.IsNull("父键") AndAlso dr.IsNull("标记") = False Then
|
-- 作者:able -- 发布时间:2015/2/9 14:53:00 -- 非常感谢 有点甜, 再请问.勾选目录树复选框能让表的复选框同时勾选,如何做到?
|
-- 作者:Bin -- 发布时间:2015/2/9 14:56:00 -- 利用FINDRow 和e.node.text找到对应的行.再设置其复选框Checked属性 搞不定就上例子 |
-- 作者:有点甜 -- 发布时间:2015/2/9 15:06:00 -- Nodes.Add 执行以后,给节点赋值
nd.Tag = dr("_Identify")
剩余的,看6楼,find出具体的行 |
-- 作者:able -- 发布时间: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() 请问如何赋值?
|
-- 作者:有点甜 -- 发布时间:2015/2/9 15:21:00 -- nd = tr.Nodes.Add(dr("键"),dr("规格型号")) nd.Tag = dr("_Identify")
-----------
然后,要查节点对应的行,就根据tag [此贴子已经被作者于2015/2/9 15:20:45编辑过]
|
-- 作者:Bin -- 发布时间:2015/2/9 15:21:00 -- nd = tr.Nodes.Add(dr("键"),dr("规格型号")) nd.tag = dr 查找 Dim wz As Integer = Tables("订单").FindRow(nd.tag) If wz >= 0 Then Tables("订单").rows(wz).checked = true End If |