Foxtable(狐表)用户栏目专家坐堂 → TreeView1与表中不同步


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

主题:TreeView1与表中不同步

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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/27 16:22:00 [只看该作者]

老师,这样是不是不用把分类、分组授权,只需要把名称加入到集合呢???

这样反而方便,修改分类、分组、名称后都不用去修改可见、可用集合里面的数据,我弄了,在授权管理窗口的,TreeView1控件中,NodeMouseClick事件,选择不同的节点,授权好的集合在TreeView4TreeView3中不显示。

 



以下内容是专门发给有点蓝浏览


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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/27 16:37:00 [只看该作者]

还有什么问题?

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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/27 16:48:00 [只看该作者]

以下是引用有点蓝在2019/9/27 16:37:00的发言:
还有什么问题?

1、如果名称为true,上一级分组、分类自动为true;

2、在  授权管理  窗口,TreeView1控件中,NodeMouseClick事件,选择不同的节点,授权好的集合在TreeView4TreeView3中不显示;

3、不可用时,主窗口点击,提示不可见。

[此贴子已经被作者于2019/9/27 16:48:50编辑过]

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/27 17:37:00 [只看该作者]

NodeMouseClick事件

If e.Node.Level=1 Then
    Dim drrr As DataRow = e.Node.DataRow
    Dim s As String=drrr("菜单可用集合")
    Dim lst As new List(of String)  '可用集合
    lst.AddRange(s.Split(","))
    Dim tr As WinForm.TreeView = e.Form.Controls("TreeView4")
    For Each nd As WinForm.TreeNode In tr.AllNodes  '同步子节点选中状态
        nd.Checked = False
    Next
    Dim nn As WinForm.TreeNode
    For Each nd As WinForm.TreeNode In tr.AllNodes  '同步子节点选中状态
        If lst.Contains(nd.DataRow("编号"))
            nd.Checked=True
            nn = nd.ParentNode
            Do While nn IsNot Nothing
                nn.Checked = True
                nn = nn.ParentNode
            Loop
        End If
    Next
    
    s = drrr("菜单可见集合")
    lst.Clear
    lst.AddRange(s.Split(","))
    tr = e.Form.Controls("TreeView3")
    For Each nd As WinForm.TreeNode In tr.AllNodes  '同步子节点选中状态
        If lst.Contains(nd.DataRow("编号"))
            nd.Checked=True
            nn = nd.ParentNode
            Do While nn IsNot Nothing
                nn.Checked = True
                nn = nn.ParentNode
            Loop
        End If
    Next
end if

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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/27 17:56:00 [只看该作者]

谢谢老师这几天指导,我自己修改完了,最后一个问题,就是在主点击不可用的图标时,怎么判断不可用呢,没弄出来?

 


以下内容是专门发给有点蓝浏览


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


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

RowActivate事件


Dim r As DataRow  = e.Sender.Current.tag

Dim dr As DataRow = DataTables("用户管理").Find("',' + 菜单可用集合 + ',' like '%," & r("编号") & ",%' and 账号='" & _username & "'")

If dr IsNot Nothing Then

    Functions.remove("函数")

    Dim Code As String

    Code = e.sender.current.tag("代码")

    Functions.Add("函数",Code)

    Functions.Complie()

    Functions.Execute("函数")

End If


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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/29 17:00:00 [只看该作者]

老师,还麻烦一下,我这个导航表结构如下,在生存分组和名称时,把空白的也生成出来了,怎么排除空值不生成呢?

 


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

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

 

Dim lvw As WinForm.ListView = forms("主窗口").Controls("ListView1")
lvw.StopRedraw() '停止绘制
lvw.Groups.Clear() '清除原来的分组
lvw.Columns.Clear() '清除原来的列
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Details '显示模式为详细信息
lvw.TitleSize = New Size(130,80) '设置平铺区域大小
lvw.GridLines  = True '显示网格线
Dim cls() As String = {"名称"} '定义列名
Dim wds() As Integer = {100} '定义列宽
For i As Integer = 0 To  cls.Length - 1  '增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) '指定列名
    c.Text = cls(i) '指定标题,这里标题和列名相同
    c.Width = wds(i) '指定列宽
Next
Dim drs As List(of DataRow )= DataTables("导航").Select ("[分类] = '"& pag.SelectedPage.Name & "'","序号") '增加分组
For Each dr As DataRow In drs
    If array.IndexOf(kjjhs,dr("编号")) = -1 Then '不可见的跳过
        Continue For
    End If
    If lvw.Groups.contains(dr("分组")) =False And dr("分组") IsNot Nothing  Then
        Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
        grp.Name = dr("分组")
        grp.Text = dr("分组")
    End If
    Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    Dim key As String= dr("图标")
    lvw.Images.AddImage(Key, Key, Key) '添加代表这个名称的一对图标
    r.ImageKey = Key '指定图标键值
    r.Group = dr("分组") '指定所属分组
    r.Tag = dr
    For Each cl As String In cls '逐列取值
        r(cl) = dr(cl)
    Next
    If array.IndexOf(kyjhs,dr("编号")) = -1 Then '不可用的着色
        r.ForeColor= Color.Silver
    End If
    lvw.ResumeRedraw() '恢复绘制
    lvw.View = ViewMode.LargeIcon '显示模式切换为大图标
Next


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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/29 17:19:00 [只看该作者]

Dim drs As List(of DataRow )= DataTables("导航").Select ("[分类] = '"& pag.SelectedPage.Name & "' and 名称 is not null","序号") 

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


加好友 发短信
等级:狐精 帖子:3042 积分:20364 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/29 17:56:00 [只看该作者]

还有个问题,老师,我的首页页面是没有图标,但是当切换不同分类页面后,在切换到我的首页不刷新,不刷新,会保留那个分组和图标。

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/29 20:09:00 [只看该作者]

没看懂,截图说明一下

 回到顶部
总数 46 上一页 1 2 3 4 5 下一页