Winform开发框架之权限管理系统改进经验总结(2)用户选择界面的设计2014-03-26 伍华聪 在上篇总结随笔《Winform开发框架之权限管理系统改进的经验总结(1)-TreeListLookupEdit控件 的使用》介绍了权限管理模块的用户管理部分,其中主要介绍了其中的用户所属公司、所属部门、直属 经理(人员列表)的几级数据级联的展示,通过引入TreeListLookupEdit控件,能增强用户的体验效果 。本篇继续介绍权限系统模块中的一些闪光点,介绍组织机构管理里面选择用户的界面设计和实现,用 户选择在很多场合会用到,如组织机构的用户选择,角色里面的用户选择,或者流程里面的用户选择等 用途。1、选择用户界面效果展示用户选择在很多地方需要用到,本篇以组织机构里面的用户选择为例,介绍用户选择的界面效果。我 们知道,用户一般可以按组织机构进行分类,也可以按照角色进行分类,因此我们需要结合两者进行快 速展示用户的层次关系,界面效果如下所示。

在上面的界面分为三个部分:左边主要是机构和角色的展示;右边则是通过列表控件进行展示,并可 以进行勾选的操作;底部则是已选用户的列表展示(可以移除)。2、左边机构树的递归展现组织机构本身设计就是一个有层次关系的树,因此它可以通过递归函数进行展现,展示方式可以使用 传统样式的TreeView控件或者DevExpress样式的TreeList控件,不过我倾向于使用TreeView,觉得这个 线状的层次关系更美观一些,递归展示结构树的代码如下所示。
private void InitDeptTree(){this.treeDept.BeginUpdate();this.treeDept.Nodes.Clear();TreeNode node = new TreeNode();node.Text = "所有部门"; List<OUNodeInfo> list = BLLFactory<OU>.Instance.GetTree();AddDept(list, node);this.treeDept.Nodes.Add(node);this.treeDept.ExpandAll();this.treeDept.EndUpdate();}private void AddDept(List<OUNodeInfo> list, TreeNode treeNode){foreach (OUNodeInfo ouInfo in list){TreeNode deptNode = new TreeNode();deptNode.Text = ouInfo.Name;deptNode.Tag = ouInfo.ID;deptNode.ImageIndex = Portal.gc.GetImageIndex(ouInfo.Category);deptNode.SelectedImageIndex = Portal.gc.GetImageIndex(ouInfo.Category);treeNode.Nodes.Add(deptNode);AddDept(ouInfo.Children, deptNode);}}