以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  内部函数如何添加筛选条件  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=158595)

--  作者:weibu
--  发布时间:2020/11/25 19:04:00
--  内部函数如何添加筛选条件
老师下面是我创建了内部函数,现在我想加筛选条件dim filter as string = Functions.Execute("iload","部门信息","department"),这个filter加到哪个位置?代码如何写?filter是获取的满足条件的departID, filter = "departid in (\'" & str.Replace(",","\',\'") &  "\')"  我想达到生成的目录树是在他可查看部门的权限范围内
Dim nd As WinForm.TreeNode = args(0)
Dim dt As DataTable = args(1)
Dim drs As List(of DataRow) = dt.Select("[parentID] = \'" & nd.name & "\' and filter ","order")
For Each dr As DataRow In drs
    Dim cd As Winform.TreeNode = nd.Nodes.Add(dr("departID"),dr("departname"))
    Functions.Execute("AddChildren",cd,dt)
Next
[此贴子已经被作者于2020/11/25 19:07:58编辑过]

--  作者:weibu
--  发布时间:2020/11/26 8:24:00
--  
老师还有个问题,就是这个是递归函数的案例。必须要求有数据的父键[parentID] 为空的存在,否则就无法调用生成目录树?我想根据filter仅能查看销售部以下的部门目录树,怎么修改代码?
--  作者:有点蓝
--  发布时间:2020/11/26 8:51:00
--  
代码没头没尾的,没看懂。请上传实例说明
--  作者:weibu
--  发布时间:2020/11/26 9:06:00
--  
老师就是咱们CaseStudy目录下的文件: 递归函数.Table这个,我定义了一个筛选变量filter,如果fiter = "键 In (" & ids & ")"   ;我想修改代码仅按filter生成部分目录树。
--  作者:weibu
--  发布时间:2020/11/26 9:12:00
--  
老师现在如果fiter = "键 In (" & ids & ")"   ;  ids中不存在父键为空的行数据,就根本不生产目录树。这样就导致我想仅生成h-i-g这个目录树就无法生成;
老师我想在AddChildren函数上直接加上filter条件,这样调用起来更方便?是否可以
[此贴子已经被作者于2020/11/26 9:15:54编辑过]

--  作者:有点蓝
--  发布时间:2020/11/26 9:26:00
--  
作为函数参数传进来

Dim nd As WinForm.TreeNode = args(0)
Dim dt As DataTable = args(1)
dim filter as string =  args(2)
Dim drs As List(of DataRow) = dt.Select("[parentID] = \'" & nd.name & "\' and " &  filter,"order")
For Each dr As DataRow In drs
    Dim cd As Winform.TreeNode = nd.Nodes.Add(dr("departID"),dr("departname"))
    Functions.Execute("AddChildren",cd,dt,filter)
Next

--  作者:weibu
--  发布时间:2020/11/26 9:45:00
--  
老师生成目录树的代码如何修改?现在如果不存在父键为空的行,就没法生成目录树
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()

--  作者:有点蓝
--  发布时间:2020/11/26 9:55:00
--  
("表A")肯定要包含父键为空的行。

另外做一个递归函数,做加载条件的时候,把ids里所有的键的上级键全部取出来作为加载条件
[此贴子已经被作者于2020/11/26 9:56:01编辑过]

--  作者:weibu
--  发布时间:2020/11/26 10:33:00
--  
老师我想生成销售部及销售部下级部门的目录树,就没法生成了?那我可不可以指定一个键ID作为目录树的顶级,让我的需求实现?代码该如何修改
--  作者:有点蓝
--  发布时间:2020/11/26 10:35:00
--  
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("父键") = "xx键" Then
        nd = tr.Nodes.Add(dr("键"),dr("标题"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()