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


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

主题:TreeView1与表中不同步

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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/26 9:26:00 [显示全部帖子]

老师,我增加了子键列,在增加子项时,怎么判断当前父键有没子节点呢?这个思路还是有点没理清楚。

     Case 0
        Dim r As DataRow=dt.AddNew
        r("序号")=dt.sqlCompute("Max(序号)")+1
        r("父键") = r0("父键")
        r("子键") = r0("子键")
        r("分类")=  r0("分类")
        r("分类图标") =  r0("分类图标")
        r("分组")= grp & r("序号")
        sd.nodes.Add(r("分组"))
        Dim s As String=r("分组")
        tr.SelectedNode =sd.Nodes(s)
        sd.Expand
        tr.Select
        r.save


图片点击可在新窗口打开查看此主题相关图片如下:111111.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/9/26 10:25:16编辑过]

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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/26 11:06:00 [显示全部帖子]

老师麻烦看看,用你的方法分组上移没反应来。

Dim dt As DataTable=DataTables(vars("editTable"))
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim sd As WinForm.TreeNode=tr.SelectedNode '当前选择的项
'If sd.Index > 0 Then
If sd.Level = 0 Then
    Dim sd2 As WinForm.TreeNode = tr.Nodes(sd.Index - 1)
    Dim dr1 As DataRow = dt.Find("分类='" & sd.text & "'")
    Dim dr2 As DataRow = dt.Find("分类='" & sd2.text & "'")
    If dr1 IsNot Nothing AndAlso dr2 IsNot Nothing Then
        Dim d1 As Integer = dr1("父键")
        Dim d2 As Integer = dr2("父键")
        dt.ReplaceFor("父键",99999,"父键=" & d2)
        dt.ReplaceFor("父键",d2,"父键=" & d1)
        dt.ReplaceFor("父键",d1,"父键=99999")
        sd.MoveUp
    End If
End If
tr.Select

If sd.Level = 1 Then
    Dim sd4 As WinForm.TreeNode = tr.Nodes(sd.Index - 1)
    Dim dr3 As DataRow = dt.Find("分组='" & sd.text & "'")
    Dim dr4 As DataRow = dt.Find("分组='" & sd4.text & "'")
    If dr3 IsNot Nothing AndAlso dr4 IsNot Nothing Then
        Dim d3 As Integer = dr3("子键")
        Dim d4 As Integer = dr4("子键")
        dt.ReplaceFor("子键",99999,"子键=" & d4)
        dt.ReplaceFor("子键",d4,"子键=" & d3)
        dt.ReplaceFor("子键",d3,"子键=99999")
        sd.MoveUp
    End If
End If
tr.Select


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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/26 14:15:00 [显示全部帖子]

老师,我节点增加完成,如果修改分类或分组节点,导航表中只修改得了当前的节点对应的行的名称,不是分类,分组的所有节点都修改,如何来判定是后来修改不是第一次新增后修改呢?如果是后面修改就需要修改一个分类或分组的名称。

 

 

[此贴子已经被作者于2019/9/26 14:28:46编辑过]

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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/26 17:28:00 [显示全部帖子]

老师,导航  表中的分类、分组、名称修改后,怎么让“用户管理”表中:菜单可见集合、菜单可用集合的名称同步修改呢,删除也同步删除。

[此贴子已经被作者于2019/9/26 17:28:51编辑过]

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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/27 11:16:00 [显示全部帖子]

麻烦老师写一下,没弄来,

用户管理表中,菜单可见集合、菜单可用集合 是用字符串来保存的,没弄来,有两个:

1、修改分类、分组、名称时,在用户管理表中,菜单可见集合、菜单可用集合同步更新为修改后的;

2、删除分类、分组、名称时,在用户管理表中,菜单可见集合、菜单可用集合同步修改。

这是最新的文件。

 


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


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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/27 15:09:00 [显示全部帖子]

我调试页发现这个问题了,那这个框架这样还有问题,名称没法避免不可能不重复啊。

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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/27 16:22:00 [显示全部帖子]

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

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

 



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


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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望: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编辑过]

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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/27 17:56:00 [显示全部帖子]

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

 


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


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


加好友 发短信
等级:狐精 帖子:3054 积分:20434 威望: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


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