一 要引入的js css库

  1. <link type="text/css" href="css/base.css" rel="stylesheet" />
  2. <link type="text/css" href="jquery-easyui-1.4/themes/default/easyui.css" rel="stylesheet" />
  3. <link type="text/css" href="jquery-easyui-1.4/themes/icon.css" rel="stylesheet" />
  4. <link type="text/css" href="css/icon.css" rel="stylesheet" />
  5. <script type="text/javascript" src="jquery-easyui-1.4/jquery.min.js"></script>
  6. <script type="text/javascript" src="jquery-easyui-1.4/jquery.easyui.min.js"></script>
  7. <script type="text/javascript" src="jquery-easyui-1.4/locale/easyui-lang-zh_CN.js"></script>
  8. <script type="text/javascript" src="Scripts/json2.js"></script>
  9. <%--<script type="text/javascript" src="jquery-easyui-1.4/extension/jquery-easyui-datagridview/datagrid-detailview.js"></script>--%>
  10. <script type="text/javascript" src="Scripts/parseurl.js"></script>

  

二  写DIV用来存放菜单树,代码如下

<div region="center" border="false" data-options="title:'系统导航',collapsible:true"> tree的标题、位置,等属性
            <div id="menuTree"></div>   通过js获取后台json数据,展现出来
       </div>

三  写 js代码,与后台进行交互

  1. $(function () { //在页面加载完毕后会执行该方法,个人理解$(function(){});好比就是java c#中的main()方法,是程序的入口
  2. LoadMenuTree();
  3. });
  4.  
  5. function LoadMenuTree() {
  6.  
  7. $('#orgTree').tree({
  8. url: 'ashx/NewMenu.ashx?cmd=GetMENUTrees',//根据链接获取后台方法
  9.  
  10. onSelect: function (node) {//选中某个节点,会调用该事件
  11. if (node.link != "")
  12. getAspxFromMenuUrl(node.link)//根据传来的节点属性link进行页面的跳转
  13. },
  14. onLoadSuccess: function () {//成功加载树后会调用该事件
  15. var rootNode = $("#orgTree").tree('getRoot');
  16. $("#orgTree").tree("select", rootNode.target);
  17. },
  18. })
  19. }

  

四  对后台代码的调用

  1. 1找到后台方法

    NewMenu.ashx 页面内的内容

  1. url: 'ashx/NewMenu.ashx?cmd=GetMENUTrees', 通过该链接既可找到 NewMenu类中的 GetMENUTrees方法
  1.  
  1. 2 后台方法的实现
  1. GetMENUTrees方法
  1. #region 获取菜单树
  2. public string GetMENUTrees(HttpContext context)
  3. {
  4. try
  5. {
  6. DataTable _menuOption = 从数据库中获取菜单的信息(下面将会介绍数据库的设计,以及如何从数据库中获取菜单数据)
  7. if (_menuOption.Rows.Count > 0)
  8. {
  9. List<EasyUITreeNode> list = GetTreeNode(_menuOption); //将菜单数据转换为带有递归关系的集合(即上下级关系)
  10.  
  11. return ObjToJson(list); //将集合转换为json数据,最后返回前台
  12. }
  13. else
  14. {
  15. return " ";
  16. }
  17.  
  18. }
  19. catch (Exception e)
  20. {
  21. throw e;
  22. }
  23.  
  24. }
  1. 两个bean
  1.  
  1. public class EasyUITreeNode
  2. {
  3. public string pkid { set; get; }//主键
  4. public string id { set; get; }//菜单ID
  5. public string text { set; get; }//菜单名称
  6. public string level { set; get; }
  7. public string iconCls { set; get; }
  8. public string state { set; get; }//节点是否展开
  9.  
  10. public string link { set; get; }//链接
  11. public string iscontainer { set; get; }//是否为容器
  12. public string visible { set; get; }//是否可见
  13. public string parentid { set; get; }//上级
  14. public string image { set; get; }
  15. public bool Checked { set; get; }
  16. public string haspermission { set; get; }
  17.  
  18. public List<EasyUITreeNode> children { set; get; }
  19. }
  20.  
  21. public partial class SYS_MENUANDMEMBER
  22. {
  23. public int id { set; get; }
  24. public int orderid { set; get; }
  25. public string iconCls { set; get; }
  26. public int levels { set; get; }
  27. public string name { set; get; }
  28. public string link { set; get; }
  29. public int parent{ set; get; }
  30. public string iscontainer { set; get; }//是否为容器
  31. public string visible { set; get; }//是否可见
  32. public string image { set; get; }
  33. public string imgchange { set; get;}
  34. public string javascript { set; get; }
  35. }
  1. DataTable _menuOption 转换为带有递归关系的List<EasyUITreeNode> 集合
  1. //获取根节点
  2. public List<EasyUITreeNode> GetTreeNode(DataTable _menuOtion)
  3. {
  4. DatatableToList<SYS_MENUANDMEMBER> list = new DatatableToList<SYS_MENUANDMEMBER>();
  5. menuList = list.ConvertTolist(_menuOtion);//将 DataTable数据转换为list
  6. List<SYS_MENUANDMEMBER> menulistNode = menuList.Where(m => m.parent == 0).ToList() 获取菜单的跟菜单,祖先菜单
  7. List<EasyUITreeNode> treeList = new List<EasyUITreeNode>();
  8. if (menulistNode.Count < 1)//为空,返回空值
  9. {
  10. return null;
  11. }
  12. else //不为空 则将 menulistNode 转换为 EasyUITreeNode
  13. {
  14. for (int i = 0; i < menulistNode.Count; i++)
  15. {
  16. EasyUITreeNode tree = new EasyUITreeNode();
  17. tree.id = menulistNode[i].id.ToString();
  18. tree.text = menulistNode[i].name;
  19. tree.level = menulistNode[i].levels.ToString();
  20. tree.link = menulistNode[i].link;
  21. tree.parentid = menulistNode[i].parent.ToString();
  22. tree.iscontainer = menulistNode[i].iscontainer;
  23. tree.visible = menulistNode[i].visible;
  24.  
  25. //tree.iconCls = "panel-tool-collapse";
  26. tree.iconCls = menulistNode[i].imgchange;
  27. tree.state = "closed";
  28.  
  29. tree.children = GetTreeChildren(menulistNode[i].id);将根菜单的id作为其下级菜单的parentid,获取其下属的菜单
  30. treeList.Add(tree);
  31.  
  32. }
  33. return treeList;
  34. }
  35. }
  36.  
  37. //获取子节点
  38. private List<EasyUITreeNode> GetTreeChildren(Int32 p) 方法原理同其上次菜单获取的原理相同
  39. {
  40. List<SYS_MENUANDMEMBER> menulistChildred = menuList.Where(m => m.parent.Equals(p)).ToList();
  41.  
  42. List<EasyUITreeNode> treeList = new List<EasyUITreeNode>();
  43. if (menulistChildred.Count < 1)
  44. {
  45. return null;
  46. }
  47. else
  48. {
  49. for (int i = 0; i < menulistChildred.Count; i++)
  50. {
  51. EasyUITreeNode tree = new EasyUITreeNode();
  52. tree.id = menulistChildred[i].id.ToString();
  53. tree.text = menulistChildred[i].name;
  54. tree.level = menulistChildred[i].levels.ToString();
  55. tree.link = menulistChildred[i].link;
  56. tree.parentid = menulistChildred[i].parent.ToString();
  57. tree.iscontainer = menulistChildred[i].iscontainer;
  58. tree.visible = menulistChildred[i].visible;
  59. //tree.iconCls = menulistChildred[i].image;
  60. tree.iconCls = menulistChildred[i].imgchange;
  61.  
  62. //tree.state = "closed";
  63. tree.children = GetTreeChildren(menulistChildred[i].id);//一步步递归,最后将会得到一个具有层层递归关系的集合
  64. treeList.Add(tree);
  65.  
  66. }
  67. return treeList;
  68. }
  69. }
  1. #region Datatable转List
  2. public class DatatableToList<T> where T : new()
  3. {
  4. public List<T> ConvertTolist(DataTable dt)
  5. {
  6. List<T> ts = new List<T>();
  7. Type type = typeof(T);
  8. string tempName = "";
  9. foreach (DataRow dr in dt.Rows)
  10. {
  11. T t = new T();
  12. PropertyInfo[] propertys = t.GetType().GetProperties();
  13. foreach (PropertyInfo pi in propertys)
  14. {
  15. tempName = pi.Name;
  16. if (dt.Columns.Contains(tempName))
  17. {
  18. if (!pi.CanWrite) continue;
  19. object value = dr[tempName];
  20. if (value != DBNull.Value)
  21. pi.SetValue(t, value, null);
  22. }
  23.  
  24. }
  25.  
  26. ts.Add(t);
  27. }
  28. return ts;
  29. }
  30. }
  31. #endregion
  32.  
  33.  

  

  1. //将返回值转换为json
  2. public static string ObjToJson<T>(T data)
  3. {
  4. return JsonConvert.SerializeObject(data);
  5. }

  

  

 五 数据库部分  后续更新....

  关于数据库的设计可以参考我的另一篇随笔 mvc+easyui,写个树

EasyUI Tree 树 ——实现多级别菜单的展示,以及与后台数据的交互的更多相关文章

  1. 数据网格和树-EasyUI Datagrid 数据网格、EasyUI Propertygrid 属性网格、EasyUI Tree 树、EasyUI Treegrid 树形网格

    EasyUI Datagrid 数据网格 扩展自 $.fn.panel.defaults.通过 $.fn.datagrid.defaults 重写默认的 defaults. 数据网格(datagrid ...

  2. Easyui 实现点击不同树节点打开不同tab页展示不同datagrid表数据设计

    实现点击不同树节点打开不同tab页展示不同datagrid表数据设计 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 需求描述 如上图, 1.点击左侧树,叶子 ...

  3. EasyUI - Tree 树组件

    效果: 数据库设计: 使用的数据: 其中的字段,是跟据要生成的树节点的属性定义的. text:代表要显示的字段名称. state:是否是目录节点. iconCls:节点的图标是什么. url:跳转的链 ...

  4. .NET easyUI tree树状结构

    简单的制作后台制作写一个json(string类型)格式 public partial class goodstype_type : System.Web.UI.Page { public strin ...

  5. .net easyui Tree树

    原文:https://www.cnblogs.com/hantianwei/archive/2012/03/19/2407118.html Tree 树   用 $.fn.tree.defaults ...

  6. EasyUI Tree 树

    转自:http://www.jeasyui.net/plugins/185.html 通过 $.fn.tree.defaults 重写默认的 defaults. 树(tree)在网页中以树形结构显示分 ...

  7. Easyui tree 开启拖放后 在IE下 性能惨不忍睹

    项目中加载一个树结构代码如下 //加载树 function LoadTree() { var url = "../Ajax/StationTree.ashx?showVirtual=1&qu ...

  8. 【原】无脑操作:EasyUI Tree实现左键只选择叶子节点、右键浮动菜单实现增删改

    Easyui中的Tree组件使用频率颇高,经常遇到的需求如下: 1.在树形结构上,只有叶子节点才能被选中,其他节点不能被选中: 2.在叶子节点上右键出现浮动菜单实现新增.删除.修改操作: 3.在非叶子 ...

  9. 第二百二十六节,jQuery EasyUI,Tree(树)组件

    jQuery EasyUI,Tree(树)组件 本节课重点了解 EasyUI 中 Tree(树)组件的使用方法,这个组件依赖于 Draggable(拖 动)和 Droppable(放置)组件. 一.加 ...

随机推荐

  1. mpls vpn剩余笔记

    将IP地址映射为简单的具有固定长度的标签 用于快速数据包交换 20 3 1 8 在整个转发过程中,交换节点仅根据标记进行转发 标签交换路径(LSP) 多协议标签交换MPLS最初是为了提高转发速度而提出 ...

  2. 第六次meeting会议

    [Beta] 第六次Daily Scrum Meeting 一.本次会议为第六次meeting会议 二.时间:10:00AM-10:20AM 地点:禹州楼 三.会议站立式照片 四.今日任务安排 成员 ...

  3. 201521123044 《Java程序设计》第6周学习总结

    1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  4. 201521123081《Java程序设计》 第1周学习总结

    #1. 本周学习总结 ###JAVA是1995年SUN推出的一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的,安全的,结构的,中立的,可移植的,性能很优异的,多线程的,动态的语言.是世界上广 ...

  5. JAVA课设--五子棋--团队博客

    1 团队名称.团队成员介绍 徐璐琳 网络1511班 201521123010 祁泽文 网络1511班 201521123011 张晨晨 网络1511班 201521123009 2 项目git地址 团 ...

  6. SpringMVC第四篇【参数绑定详讲、默认支持参数类型、自定义参数绑定、RequestParam注解】

    参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定- 默认支持的参数类型 从上面的用法我们可以发现,我们可以使用req ...

  7. 深入理解分布式调度框架TBSchedule及源码分析

    简介 由于最近工作比较忙,前前后后花了两个月的时间把TBSchedule的源码翻了个底朝天.关于TBSchedule的使用,网上也有很多参考资料,这里不做过多的阐述.本文着重介绍TBSchedule的 ...

  8. SimpleRpc-网络事件响应Reactor设计模式

    前言 这篇文章主要介绍整个框架用到的最核的一个设计模式:反应器模式.这个设计模式可以在<面向对象的软件架构>中详细了解,没有这本书的小伙伴不要急,我通过咱们的SimpleRpc来告诉大家这 ...

  9. ACM学习之路___HDU 2066 一个人的旅行

    Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还 ...

  10. JS(二)

    上周给大家介绍了一下JS基础中一点东西,今天给大家介绍一下JS基础中一个重要部分,循环和函数. 04-JS中的循环结构 一.[循环结构的步骤] 1.首先要先声明循环变量. 2.判断循环条件 3.执行循 ...