以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于给目录树的某层加图标,看了程版的视频摸着做的 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43257) |
-- 作者:2 -- 发布时间:2013/12/3 11:49:00 -- 关于给目录树的某层加图标,看了程版的视频摸着做的 Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") Dim sql As String Dim dt As DataTable sql = "SELECT 员工ID,员工姓名,所在部门,职位 From {员工基本信息表}" dt = Functions.Execute("OutSqlCommand",sql) trv.BuildTree(dt,"所在部门|职位|员工ID") trv.StopRedraw \'停止绘制目录树 For Each nd As WinForm.TreeNode In trv.AllNodes \'遍历所有节点 If nd.Level = 2 Then \'如果是二级节点 nd.Text = nd.text & " " & nd.DataRow("员工姓名") nd.IconFile= ProjectPath & "Images\\boss.ico" End If Next trv.ResumeRedraw \'恢复绘制目录树 怎么样限制只给最后一层加图标呢?? |
-- 作者:Bin -- 发布时间:2013/12/3 11:56:00 -- 你的代码没错. |
-- 作者:Bin -- 发布时间:2013/12/3 11:57:00 -- 你看下你是否在控件属性里设置了所有节点的图标 |
-- 作者:逛逛 -- 发布时间:2013/12/3 11:59:00 -- 定级的话
If nd.Level = 2 Then \'如果是二级节点 改成 nd.Level = 4 或几 你想要的级次
不定级 判断是否有子级
BIN 说的对,应该是把属性中的图标去掉,但好像是要么全有图标,只是图标不同而已。可以单独设吗? [此贴子已经被作者于2013-12-3 12:08:15编辑过]
|
-- 作者:程兴刚 -- 发布时间:2013/12/3 12:08:00 -- 当给目录树指定图标时,需要给所有节点指定图标,否则,未指定图标的节点将默认您给他指定的最近一个图标(因为目录树节点图标要么都有,要么都没有,一旦部分显示,其他不能为空),如果您这样: 保存十个图标,命名为1boss.ico、2boss.ico、3boss.ico……10boss.ico,这样您的节点图标支持到十级
您的代码改为这样再试试: For Each nd As WinForm.TreeNode In trv.AllNodes \'遍历所有节点
If nd.Level = 2 Then \'如果是二级节点
nd.Text = nd.text & " " & nd.DataRow("员工姓名")
nd.IconFile= ProjectPath & "Images\\" & nd.Level+1 & "boss.ico"
End If
Next
|
-- 作者:程兴刚 -- 发布时间:2013/12/3 12:10:00 -- 当然,可以在您原代码的基础上:
For Each nd As WinForm.TreeNode In trv.AllNodes \'遍历所有节点
If nd.Level = 0 Then \'如果是二级节点
nd.Text = nd.text & " " & nd.DataRow("员工姓名")
nd.IconFile= ProjectPath & "Images\\bossA.ico"
End If If nd.Level = 1 Then \'如果是二级节点
nd.Text = nd.text & " " & nd.DataRow("员工姓名")
nd.IconFile= ProjectPath & "Images\\bossB.ico"
End If If nd.Level = 2 Then \'如果是二级节点
nd.Text = nd.text & " " & nd.DataRow("员工姓名")
nd.IconFile= ProjectPath & "Images\\bossC.ico"
End If
\'……
Next
总之,您需要从0级节点开始,对所有节点指定图标!
[此贴子已经被作者于2013-12-3 12:11:01编辑过]
|
-- 作者:2 -- 发布时间:2013/12/3 19:37:00 -- 谢射程版,bin,逛逛,排名不分先后! |
-- 作者:程兴刚 -- 发布时间:2013/12/3 20:06:00 -- 呵呵,不留我的名我都没意见!
对了,前两个nd.Text = nd.text & " " & nd.DataRow("员工姓名")可以去掉,应该是最末级才是员工姓名 |
-- 作者:2 -- 发布时间:2013/12/7 13:29:00 -- 谢程版,搞定了! \'\'\' Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") Dim sql As String Dim dt As DataTable sql = "SELECT [用户ID],[用户名],[所属组],[角色],[性别] From {系统管理员表}" dt = Functions.Execute("OutSqlCommand",sql) trv.BuildTree(dt,"所属组|角色|用户ID") trv.StopRedraw \'停止绘制目录树 For Each nd As WinForm.TreeNode In trv.AllNodes \'遍历所有节点 If nd.Level = 0 Then \'如果是一级节点 nd.IconFile= ProjectPath & "Images\\0boss.ico" End If If nd.Level = 1 Then \'如果是二级节点 nd.IconFile= ProjectPath & "Images\\1boss.ico" End If If nd.Level = 2 Then \'如果是三级节点 If nd.DataRow("性别")="男" nd.IconFile= ProjectPath & "Images\\mboss.ico" Else If nd.DataRow("性别")="女" nd.IconFile= ProjectPath & "Images\\wboss.ico" End If nd.Text = nd.text & " " & nd.DataRow("用户名") End If Next trv.ResumeRedraw \'恢复绘制目录树
|
-- 作者:2 -- 发布时间:2013/12/9 21:49:00 -- 不知道程版还看不看得到,您的权限表有哪些字段呢,我想参考下,我的表列有:用户名,表名,列名,权限。感觉您的比系统里的例子更符合使用习惯。 |