博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LigerUI权限系统之组织结构
阅读量:7286 次
发布时间:2019-06-30

本文共 8918 字,大约阅读时间需要 29 分钟。

  先上图,再看代码。组织结构界面

  组织结构添加:

  组织结构修改:

  组织结构删除:

  我在做这个页面的时候treegrid 的远程数据加载让我很头痛,从LigerUI官网提供的Demo来看,它是根据json数据格式中的children来判断是否在前面显示展开按钮,官网提供的数据格式如下:

1 var TreeDeptData = { 2             Rows: [ 3             { 4                 id: '01', name: "企划部", remark: "1989-01-12", 5                 children: [ 6                 { 7                     id: '0101', name: "企划分部一", remark: "企划分部一" 8                 }, 9                 {10                     id: '0102', name: "企划分部二", remark: "企划分部二", children:11                       [12                           { id: '010201', name: "企划分部二 A组", remark: "企划分部二 A组" },13                           { id: '010202', name: "企划分部二 B组", remark: "企划分部二 B组" }14                       ]15                 },16                 { id: '0103', name: "企划分部三", remark: "企划分部三" }17                 ]18             },19             { id: '02', name: "研发部", remark: "研发部" },20             { id: '03', name: "产品部", remark: "产品部" }21             ]22         };
View Code

  从数据格式可以看出,当这一项有子节点的时候,才有children属性,但我们后台绑定数据的时候,通常返回的是一个model,所以有无子节点的数据都会有children属性,而treegrid在展示的时候,它是根据children属性来判断的,即有children,就显示展开按钮,所以界面显示的时候就会有点不伦不类.但没关系,自从我们有了dynamic 后,很多问题都解决了:)

1   [NonAction] 2         public List
GetOrgs(IEnumerable
orgs) 3 { 4 var result = new List
(); 5 6 foreach (var item in orgs) 7 { 8 var children = _orgRepository.GetOrgChildrenNodeByParentCode(item.orgcode).ToList(); 9 if (children == null || children.Count() == 0)10 {11 result.Add(new12 {13 name = item.name,14 orgcode = item.orgcode,15 parentCode = item.parentCode16 });17 }18 else19 {20 21 result.Add(new22 {23 name = item.name,24 orgcode = item.orgcode,25 parentCode = item.parentCode,26 children = GetOrgs(children)27 });28 }29 }30 return result;31 }
View Code

  前端完整代码:

1 @section headerScripts{  2       8     167 }168 169 
170 171
199 200
View Code

  后端完整代码:

1 public class OrganizationController : Controller  2     {  3         //  4         // GET: /Organization/  5   6         private IOrgRepository _orgRepository;  7   8         public OrganizationController(IOrgRepository orgRepository)  9         { 10             this._orgRepository = orgRepository; 11         } 12  13         public ActionResult Index() 14         { 15             return View(); 16         } 17  18         public JsonResult OrgDataSource() 19         { 20             var data = _orgRepository.GetOrgParentsNode().ToList(); 21             var result = GetOrgs(data); 22             return Json(new { Rows = result, Total = result.Count() }, JsonRequestBehavior.AllowGet); 23         } 24  25         [NonAction] 26         public List
GetOrgs(IEnumerable
orgs) 27 { 28 var result = new List
(); 29 30 foreach (var item in orgs) 31 { 32 var children = _orgRepository.GetOrgChildrenNodeByParentCode(item.orgcode).ToList(); 33 if (children == null || children.Count() == 0) 34 { 35 result.Add(new 36 { 37 name = item.name, 38 orgcode = item.orgcode, 39 parentCode = item.parentCode 40 }); 41 } 42 else 43 { 44 45 result.Add(new 46 { 47 name = item.name, 48 orgcode = item.orgcode, 49 parentCode = item.parentCode, 50 children = GetOrgs(children) 51 }); 52 } 53 } 54 return result; 55 } 56 57 public JsonResult ParentNode() 58 { 59 var data = _orgRepository.GetOrgAll().ToList(); 60 61 return Json(data, JsonRequestBehavior.AllowGet); 62 } 63 64 public JsonResult AddOrg(string parentNode, string orgName, string orgCode) 65 { 66 67 var check = _orgRepository.GetOrgBySpecifiedCondition(orgCode); 68 69 if (check.Count() > 1) 70 { 71 return Json(new { result = false, msg = "添加失败,已存在相同的组织结构名称或组织机构编码!" }, JsonRequestBehavior.AllowGet); 72 } 73 74 var org = new t_org() 75 { 76 parentCode = parentNode, 77 name = orgName, 78 orgcode = orgCode 79 }; 80 81 try 82 { 83 var result = _orgRepository.AddOrg(org); 84 if (result) 85 { 86 return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet); 87 } 88 else 89 { 90 return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet); 91 } 92 } 93 catch (Exception ex) 94 { 95 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet); 96 } 97 } 98 99 public JsonResult ModifyOrg(string orgName, string orgCode) {100 101 var check = _orgRepository.GetOrgBySpecifiedCondition(orgCode);102 103 if (check.Count() > 1)104 {105 return Json(new { result = false, msg = "修改失败,已存在相同的组织结构名称或组织机构编码!" }, JsonRequestBehavior.AllowGet);106 }107 108 var org = new t_org()109 {110 name = orgName,111 orgcode = orgCode112 };113 114 try115 {116 var result = _orgRepository.ModifyOrg(org);117 if (result)118 {119 return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);120 }121 else122 {123 return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);124 }125 }126 catch (Exception ex)127 {128 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);129 }130 }131 132 public JsonResult DeleteOrg(string orgCode) {133 134 var org = new t_org()135 {136 orgcode = orgCode137 };138 139 try140 {141 var result = _orgRepository.DeleteOrg(org);142 if (result)143 {144 return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);145 }146 else147 {148 return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);149 }150 }151 catch (Exception ex)152 {153 return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);154 }155 }156 }
View Code

转载于:https://www.cnblogs.com/qiuyan/p/3232976.html

你可能感兴趣的文章
360抢夺“度娘”?
查看>>
我的友情链接
查看>>
firewall-cmd防火墙概述
查看>>
Redhat+Nginx0.8.46+PHP5.2.14+Mysql5.1.46构建LNMP(X64)平台
查看>>
win8 体验
查看>>
LAMP环境搭建图形界面配置MySQL数据库
查看>>
Microsoft + GitHub = 给开发者赋能
查看>>
django实例教程
查看>>
swift 中String常用操作
查看>>
oracle lock基础知识(一)
查看>>
eclipse alt+/ 无法使用或者显示不了方法
查看>>
[微擎]更改微擎后台顶部导航配色
查看>>
web报表functionChart教程
查看>>
ls命令实现分析
查看>>
使用 django-blog-zinnia 搭建个人博客
查看>>
设置一个临时变量交换两个变量的值
查看>>
java:关于SerialVersionUid
查看>>
nagios与cacti的整合
查看>>
使用RHEL6.3+PXE+DHCP+Apache+NFS+KickStart 无人值守安装RHEL6.3
查看>>
JXL GC 问题探讨
查看>>