Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口多选目录树问题


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

主题:[求助]窗口多选目录树问题

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
[求助]窗口多选目录树问题  发帖心情 Post By:2019/6/5 16:33:00 [只看该作者]

老师好。想实现:1、启动窗口后,窗口多选目录树(不是下拉那种)根据窗口文本框的内容,自动显示节点勾选结果;
                      2、在勾选各层级节点后,即时将所勾选的节点名称写入窗口的文本框内。

代码运行出错[未找到类型“TreeView”的公共成员“Value”。]勾选节点也不能即写入窗口文本框。请老师帮助修正代码。谢谢。

一、窗口的AfterLoad事件代码:
Dim s As String  = e.Form.Controls("TextBox5").Value    '设置文本框的值
Dim nms As new List(of String)
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")    '目录树
If s > "" Then    '如果文本框不为空
    nms.AddRange(s.Split(","))    '增加多个值并在值之间插入分隔符
End If
For Each nd As WinForm.TreeNode In trv.AllNodes    '遍历目录树节点(所有层级)
    nd.Checked = nms.Contains(nd.text)    '选中节点复选框时,判断集合中是否包含其值
    If nd.Checked Then
        s = s & "," & nd.Text
    End If
Next
trv.ExpandAll()


二、目录树AfterCheckNode事件代码:
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = trv.SelectedNode    '选定的节点
'Dim dr As DataRow
If e.Node.ParentNode IsNot Nothing Then '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
    e.Node.ParentNode.Checked = False
End If
For Each cnd As WinForm.TreeNode In e.Node.Nodes '取消子节点的选中标记,因为选中父节点,就不要选中子节点了
    cnd.Checked = False
Next
Dim nms As String
For Each nd1 As WinForm.TreeNode In trv.AllNodes    '遍历目录树所有层级的子节点
    If nd1.Checked Then
        nms = nms & "," & nd.Text
    End If
Next
e.Form.Controls("TextBox5").Value = nms.trim(",")    '将选定节点名称写入文本框  已修正

[此贴子已经被作者于2019/6/5 17:53:53编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/5 17:29:00 [只看该作者]

红色的,应该是文本框名称吧?不是treeview控件的名称

 

e.Form.Controls("TreeView1_Page14").Value


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/5 17:38:00 [只看该作者]

谢谢老师,目录树名称,"TreeView1"

这一行应该是文本框的e.Form.Controls("TextBox5").Value = nms.trim(",")  


一楼已经修改。代码是从帮助示例中拼凑的,请老师费心修正。
[此贴子已经被作者于2019/6/5 17:44:26编辑过]

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/5 18:03:00 [只看该作者]

谢谢老师。按老师的指正将目录树AfterCheckNode事件代码中的“e.Form.Controls("TreeView1_Page14").Value”修改为“e.Form.Controls("TextBox5").Value = nms.trim(",") ”  后能勾选了,但是文本框中的内容是重复的(不管是几级节点,勾选几个就在文本框中显示几个最后勾选的那个节点)。请老师帮助指正。谢谢。

[此贴子已经被作者于2019/6/5 18:02:54编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/5 18:10:00 [只看该作者]

nms = nms & "," & nd.Text

 

改成

 

nms = nms & "," & nd1.Text


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/6 8:49:00 [只看该作者]

老师好。按老师的指导,能勾选了,但还存在如下问题:

    1、目录树不能随文本框中的内容变化而即时刷新改变节点勾选状态(即:文本框中有、目录树节点显示勾选;否则目录树不显示勾选);
    2、如果在目录树取消最后一个勾选(即没有选择)时,报错“未将对象引用设置到对象的实例。”,并且最后一个节点名称还存在于文本框中;
    
请老师帮助修改(一楼)代码。谢谢。
[此贴子已经被作者于2019/6/6 9:07:27编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/6 9:11:00 [只看该作者]

 

请做一个具体事例发上来测试。

 

 


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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/6 10:31:00 [只看该作者]

老师好。实例如下。


[此贴子已经被作者于2019/6/6 21:52:02编辑过]

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/6 10:50:00 [只看该作者]

老师好。还想实现如下功能。

1、当选择左边的用户名时,能判断该用户的“用户权限”文本框中具有那些权限,并即时在目录树相应节点中勾选显示;
2、目录树勾选须按“父-子”顺序勾选(即:选择了“父”,才能选择“子”),也就是有了“父权限”才能有“子权限”。取消目录树勾选时则按相反顺序,即取消全部“子权限”,才能取消“父权限”;
3、勾选“父权限”不能取消全部子权限,因为勾选了“父权限”并不意味着就能拥有“全部子权限”。相反,只要拥有一项“子权限”,即意味必定拥有“父权限”。

请老师帮助实现。谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/6 11:42:00 [只看该作者]


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