Foxtable(狐表)用户栏目专家坐堂 → 分享:目录树权限管理示例


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

主题:分享:目录树权限管理示例

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/8/25 13:23:00 [显示全部帖子]

顶一个。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/8/25 20:18:00 [显示全部帖子]

感觉一楼的项目存在一些设计上的问题。

比如每次都清空表,再生成,好像没这个必要,理由,用户表的列是固定的,没必要动态生成。

再则,这样会造成闪屏,感觉不舒服。

 

另外目录树控件的AfterCheckNode事件代码好像优化空间非常大。

一家之言,杨版莫怪。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/8/25 20:47:00 [显示全部帖子]

改了一下。

 

ComboBox1控件SelectedIndexChanged事件代码

 

If e.Sender.Value = "" Then
    Return
End If

Dim dr As DataRow = DataTables("用户").Find("用户名 = '" & e.Sender.Value & "'")
If dr IsNot Nothing Then
    For Each dr1 As DataRow In DataTables("权限管理").DataRows
        dr1("A") = dr(dr1("权限细目").Replace("\","_"))
    Next
End If

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.CreateTree("权限管理","权限细目","\","","_Identify")
For Each nd As WinForm.TreeNode In tr.AllNodes
    For Each dr2 As Row In Tables("权限管理").Rows
        Dim Parts() As String = dr2("权限细目").Split("\")
        If nd.Text = Parts(1) And dr2("A") = True Then
            nd.Checked = True
        End If
    Next
Next
tr.ExpandAll()

 

TreeView1控件,AfterCheckNode事件代码:

 

e.Form.StopRedraw()
Dim r As DataRow = DataTables("用户").Find("用户名 = '" & e.Form.Controls("ComboBox1").Value & "'")
If r IsNot Nothing Then
    r(e.Node.FullPath.Replace("\","_")) = e.Node.Checked
End If
e.Form.ResumeRedraw()
 

项目在这:

 

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table

[此贴子已经被作者于2011-8-25 21:04:51编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/8/26 0:46:00 [显示全部帖子]

在权限表中,这样更直观一点。

 

If e.Sender.Value = "" Then
    Return
End If

 

Dim dr As DataRow = DataTables("用户").Find("用户名 = '" & e.Sender.Value & "'")
If dr IsNot Nothing Then
    For Each dr1 As DataRow In DataTables("权限管理").DataRows
        dr1("A") = dr(dr1("权限细目").Replace("\","_"))
    Next
End If

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.CreateTree("权限管理","权限细目","\","","_Identify")
For Each nd As WinForm.TreeNode In tr.AllNodes
    For Each dr2 As Row In Tables("权限管理").Rows
        Dim Parts() As String = dr2("权限细目").Split("\")
        If nd.Text = Parts(1) Then
            nd.Checked = dr2("A")
        End If
    Next
Next
tr.ExpandAll()

 

DataTables("权限管理").DataCols("权限细目").Caption = e.Sender.Value & " 权限细目"
DataTables("权限管理").BuildHeader()


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/8/26 11:02:00 [显示全部帖子]

以下是引用youyuweinihao在2011-8-26 10:55:00的发言:
C和Y版主,做的实例当中,直接对人事管理这个一级模块前打勾都会报错。

 

呵呵,这个问题我倒没留意,既然你发现了,这道题就留给你了图片点击可在新窗口打开查看


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33957 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/9/15 23:59:00 [显示全部帖子]

呵呵,不知老六忘记了还是留给大家做练习了。

有时间的话倒可以琢磨一下。


 回到顶部