Foxtable(狐表)用户栏目专家坐堂 → 关于动态加载 请教


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

主题:关于动态加载 请教

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
关于动态加载 请教  发帖心情 Post By:2020/4/27 12:04:00 [只看该作者]

新建一张 权限表 有窗口 主表  关联表 三列  
我通过目录树  选择对应的窗口 打开主表 然后同时也加载关联表
系统默认是不加载任何表和数据 点击目录树时从后台获取加载条件
数据源是 sql  2019 


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



原来的做法是将窗口和主表同名,现在想修改下。
 
If e.Node.Level = 1 Then
    If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口        
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            DataTables.Load(Forms(e.Node.Text).TableName) '加载表C
        End If        
        Forms(e.Node.Text).show
        MainTable = Tables(Forms(e.Node.Text).TableName)
    Else
        Forms(e.Node.Text).show
    End If
Else
    msgbox( e.node.text & "  正在测试 中尚未开放")
End If
[此贴子已经被作者于2020/4/27 12:08:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/27 13:39:00 [只看该作者]

关联表要一起加载:http://www.foxtable.com/webhelp/topics/2755.htm
通过表名使用find到权限表查询得到关联表,合并到一起加载

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/27 18:36:00 [只看该作者]

If e.Node.Level = 1 Then
    If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口        
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            DataTables.Load(Forms(e.Node.Text).TableName) '加载表C
        End If        
        Forms(e.Node.Text).show
        MainTable = Tables(Forms(e.Node.Text).TableName)
    Else
        Forms(e.Node.Text).show
    End If
Else
    msgbox( e.node.text & "  正在测试 中尚未开放")
End If


在这个代码基础上 我想实现
当我点击节点时通过节点名在权限表里面的窗口列找到窗口名,同时打开主表列对应的主表和关联列对应的关联表  关联表的间隔符号是 | 
不会写。求助老师

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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/27 20:22:00 [只看该作者]

If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
dim dr as datarow = DataTables("权限").find("窗口='" & e.node.text & "'")
if dr isnot nothing then 
DataTables.Load(dr("对应表") & "|" & dr("关联表")) '加载表C
end if
end if
[此贴子已经被作者于2020/4/27 20:22:59编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/28 0:39:00 [只看该作者]

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Co nnecti
cmd.Co mmandText = "SELE CT DISTINCT 子菜单,权限,用户 From {菜单目录}"
dt = cmd.ExecuteReader( )
DataTables("菜单目录").LoadFilter = ""
DataTables("菜单目录").Load
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree("菜单目录", "子菜单|权限","[用户] Like '%" & User.Name & "%'", "_sortkey, _Identify")

上面的代码在 菜单目录 不被加载时应该是可以建立目录树的  不知哪里设计错误不能 建立目录树。

希望后台数据建立目录树 ,不需要加载数据或表,可行吗?还是必须加载表才能执行目录树

---------------------------
提示
---------------------------
不存在名称为"菜单目录"的DataTable!
---------------------------
确定   
---------------------------


[此贴子已经被作者于2020/4/28 0:41:36编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/28 1:11:00 [只看该作者]

这个先后顺序有问题哦,流程是先打开打开窗口,然后打开对应表  最后打开关联表,还需要麻烦老师

If e.Node.Level = 1 Then
    If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            Dim dr As DataRow = DataTables("菜单目录").find("权限='" & e.node.text & "'")
            If dr IsNot Nothing Then
                DataTables.Load(dr("对应表") & "|" & dr("关联表")) '加载表C
            End If

下面需要直接打开窗口 通知切换到对用的表

            Forms(e.Node.Text).show    定位到 权限='" & e.node.text   
            MainTable = Tables(Forms(e.Node.Text).TableName)   定位到 对应表
        Else
            Forms(e.Node.Text).show
        End If
    End If
Else
    msgbox( e.node.text & "  正在测试 中尚未开放")
    
End If

[此贴子已经被作者于2020/4/28 2:49:40编辑过]

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


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

回5楼

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Co nnecti
cmd.Co mmandText = "SELECT DISTINCT 子菜单,权限 From {菜单目录} where [用户] Like '%" & User.Name & "%'"
dt = cmd.ExecuteReader( )
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree(dt, "子菜单|权限")

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


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

回6楼,只要不是模式窗口,无所谓前后顺序。不过窗口用到的表肯定要在窗口打开前先加载

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/28 11:40:00 [只看该作者]

If e.Col.Name = "加载" Then
    Dim dr As DataRow
    'If DataTables.Contains("主表") = False Then
    If DataTables.Contains(dr("主表")) = False Then '如果表C没有加载        
        DataTables.Load(dr("主表") & "|" & dr("关联表"))
    End If
End If


上面的代码想实现单机加载列  在同行获取主表和 关联表加载进来

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


加好友 发短信
等级:超级版主 帖子:111410 积分:567120 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/28 13:38:00 [只看该作者]

dr改为e.row

 回到顶部
总数 24 1 2 3 下一页