Foxtable(狐表)用户栏目专家坐堂 → 内部函数如何添加筛选条件


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

主题:内部函数如何添加筛选条件

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
内部函数如何添加筛选条件  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 8:24:00 [只看该作者]

老师还有个问题,就是这个是递归函数的案例。必须要求有数据的父键[parentID] 为空的存在,否则就无法调用生成目录树?我想根据filter仅能查看销售部以下的部门目录树,怎么修改代码?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105958 积分:538865 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/26 8:51:00 [只看该作者]

代码没头没尾的,没看懂。请上传实例说明

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 9:06:00 [只看该作者]

老师就是咱们CaseStudy目录下的文件: 递归函数.Table这个,我定义了一个筛选变量filter,如果fiter = "键 In (" & ids & ")"   ;我想修改代码仅按filter生成部分目录树。

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 9:12:00 [只看该作者]

老师现在如果fiter = "键 In (" & ids & ")"   ;  ids中不存在父键为空的行数据,就根本不生产目录树。这样就导致我想仅生成h-i-g这个目录树就无法生成;
老师我想在AddChildren函数上直接加上filter条件,这样调用起来更方便?是否可以
[此贴子已经被作者于2020/11/26 9:15:54编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105958 积分:538865 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By: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()

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105958 积分:538865 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/26 9:55:00 [只看该作者]

("表A")肯定要包含父键为空的行。

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

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


加好友 发短信
等级:三尾狐 帖子:641 积分:5194 威望:0 精华:0 注册:2018/5/19 22:27:00
  发帖心情 Post By:2020/11/26 10:33:00 [只看该作者]

老师我想生成销售部及销售部下级部门的目录树,就没法生成了?那我可不可以指定一个键ID作为目录树的顶级,让我的需求实现?代码该如何修改

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105958 积分:538865 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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()

 回到顶部
总数 16 1 2 下一页