欢迎使用CSDN-markdown编辑器
2015-11-01 20:31
309 查看
ztree 加载部门和用户树
最近的项目中客户要以树的形式展示部门及其下属的用户,从网上看到ztree功能强大,就用了一下。废话不多说,直接上代码。
<!–由于本人是从事.net开发,所有的代码均为c#及JS–>
总体思路为首先加载部门表,然后以异步加载的形式加载用户
1、前台展示:
引用脚本:
<link href="../lib/zTree_v3/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" /> <script src="../lib/jquery/jquery-1.5.2.min.js" type="text/javascript"></script> <script src="../lib/zTree_v3/js/jquery.ztree.core-3.5.js" type="text/javascript"></script> <script src="../lib/zTree_v3/js/jquery.ztree.excheck-3.5.min.js" type="text/javascript"></script> <script src="../lib/zTree_v3/js/jquery.ztree.exedit-3.5.min.js" type="text/javascript"></script> <script src="../lib/zTree_v3/js/jquery.ztree.exhide-3.5.min.js" type="text/javascript"></script>
<body style="overflow: hidden;"> <div id="layout" style="margin: 2px; margin-right: 3px;"> <div position="left" id="mainmenu" title="用户角色"> <div id="tabcontainer" style="margin: 2px;"> <div id="menuContent" style="display:none; overflow:auto;:2px auto; width:inherit;height:99%;" title="用户"> <ul id="tree" class="ztree" style="margin-top:0; width:auto;height:400px;"></ul> </div> 请选择部门:<input type="text" id="selDepartment" style="margin: 2px 0px;width:99%;height:99%;" onclick="showMenu()"/> </div> </div> </div>
<script type="text/javascript"> //选中用户和角色ID var selectedUserID, selectedRoleID; //部门ID var _DepartmentId; //用户名 var userName; /配置ztree树 var setting = { view: { dblClickExpand: false, height:500 }, async: {//异步加载配置 enable: true, url:"Ajax_User.ashx", autoParam:["id=_DepartmentId"], //自动传值,后台接收到的为_DepartmentId otherParam:{ "view": "GetUserByDepId"},//其他值 }, data: { simpleData: { enable: true } }, callback: { onClick: onClick, } }; var zTree; var treeNodes; $(document).ready(function () { showMenu(); //初始化部门树 $.post("Ajax_Department.aspx", { cmd: "GetTree" }, function (data) { if (data != "") { var zNodes = JSON2.parse(data); $.fn.zTree.init($("#tree"), setting, zNodes); zTree = $.fn.zTree.getZTreeObj("tree"); var nodes = zTree.getNodes(); } }); }); //树的点击事件 function onClick(e, treeId, treeNode) { var zTree = $.fn.zTree.getZTreeObj("tree"), nodes = zTree.getSelectedNodes(), v = ""; nodes.sort(function compare(a, b) { return a.id - b.id; }); for (var i = 0, l = nodes.length; i < l; i++) { v += nodes[i].name + ","; } if (v.length > 0) v = v.substring(0, v.length - 1); var cityObj = $("#selDepartment"); cityObj.attr("value", v); var userid = ""; if (treeNode.isParent) { alert("请先选择一个子节点"); return; } //展示树 function showMenu() { var cityObj = $("#selDepartment"); var cityOffset = $("#selDepartment").offset(); $("#menuContent").css({ left: cityOffset.left + "px", top: cityOffset.top + cityObj.outerHeight() + "px" }).slideDown("fast"); } </script>片
2、后台获取数据
/获取部门树 private void GetTree() { List<DepartmentInfo> deps = new DepartmentManager().GetTreeDep(); ZTree zTree = null;//自 a80f 定义树的类便于向前台传值 List<ZTree> tlist = new List<ZTree>(); foreach (DepartmentInfo dep in deps) { zTree = new ZTree(); zTree.id = dep.DepID; zTree.pId = dep.DepParentID; zTree.name =dep.DepName; zTree.open = false; zTree.isParent = true;//全部部门均为父类,这样便于异步加载用户后操作用户数据 tlist.Add(zTree); } Response.Write(tlist.ToJson()); }
//异步获取用户 private void GetUserByDepId(HttpContext context) { string depId = context.Request["_DepartmentId"]; List<User> users =new UserManager().GetTreeUserWithDep(depId); List<ZTree> ztree=new List<ZTree> (); foreach (var item in users) { ZTree zt = new ZTree() { id=item.UserID, name=item.UName, isParent=false,//设为子节点,便于前台针对用户的操作 pId=item.DepID, open=true//展开用户树 }; ztree.Add(zt); } context.Response.Write(ztree.ToJson()); }
放出ZTree的API地址: Demo演示:[http://www.ztree.me/v3/demo.php#_101](http://www.ztree.me/v3/api.php#_101) API文档:[http://www.ztree.me/v3/api.php](http://www.ztree.me/v3/api.php)
相关文章推荐
- C#实现获取系统目录并以Tree树叉显示的方法
- C语言实现输入一颗二元查找树并将该树转换为它的镜像
- ztree获取当前选中节点子节点id集合的方法
- 纯jsp打造无限层次的树代码
- php遍历树的常用方法汇总
- PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
- PHP生成树的方法
- 无限树Jquery插件zTree的常用功能特性总结
- js树插件zTree获取所有选中节点数据的方法
- 后台获取ZTREE选中节点的方法
- Jquery树插件zTree用法入门教程
- Java Swing中的表格(JTable)和树(JTree)组件使用实例
- python数据结构树和二叉树简介
- 在父页面得到zTree已选中的节点的方法
- AngularJS 利用directive集成JQuery ZTree
- B+树到MySQL之innoDB
- ExtJS 4 树
- 数据库表TreeView树的快速生成
- Oracle 查询所有的父节点和子节点