一 要引入的js css库

    <link type="text/css" href="css/base.css" rel="stylesheet" />
<link type="text/css" href="jquery-easyui-1.4/themes/default/easyui.css" rel="stylesheet" />
<link type="text/css" href="jquery-easyui-1.4/themes/icon.css" rel="stylesheet" />
<link type="text/css" href="css/icon.css" rel="stylesheet" />
<script type="text/javascript" src="jquery-easyui-1.4/jquery.min.js"></script>
<script type="text/javascript" src="jquery-easyui-1.4/jquery.easyui.min.js"></script>
<script type="text/javascript" src="jquery-easyui-1.4/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="Scripts/json2.js"></script>
<%--<script type="text/javascript" src="jquery-easyui-1.4/extension/jquery-easyui-datagridview/datagrid-detailview.js"></script>--%>
<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代码,与后台进行交互

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

  

四  对后台代码的调用

 1找到后台方法

NewMenu.ashx 页面内的内容

   url: 'ashx/NewMenu.ashx?cmd=GetMENUTrees', 通过该链接既可找到 NewMenu类中的 GetMENUTrees方法

2 后台方法的实现
GetMENUTrees方法
       #region 获取菜单树
public string GetMENUTrees(HttpContext context)
{
try
{
DataTable _menuOption = 从数据库中获取菜单的信息(下面将会介绍数据库的设计,以及如何从数据库中获取菜单数据)
if (_menuOption.Rows.Count > 0)
{
List<EasyUITreeNode> list = GetTreeNode(_menuOption); //将菜单数据转换为带有递归关系的集合(即上下级关系) return ObjToJson(list); //将集合转换为json数据,最后返回前台
}
else
{
return " ";
} }
catch (Exception e)
{
throw e;
} }
两个bean类

  public class EasyUITreeNode
{
public string pkid { set; get; }//主键
public string id { set; get; }//菜单ID
public string text { set; get; }//菜单名称
public string level { set; get; }
public string iconCls { set; get; }
public string state { set; get; }//节点是否展开 public string link { set; get; }//链接
public string iscontainer { set; get; }//是否为容器
public string visible { set; get; }//是否可见
public string parentid { set; get; }//上级
public string image { set; get; }
public bool Checked { set; get; }
public string haspermission { set; get; } public List<EasyUITreeNode> children { set; get; }
} public partial class SYS_MENUANDMEMBER
{
public int id { set; get; }
public int orderid { set; get; }
public string iconCls { set; get; }
public int levels { set; get; }
public string name { set; get; }
public string link { set; get; }
public int parent{ set; get; }
public string iscontainer { set; get; }//是否为容器
public string visible { set; get; }//是否可见
public string image { set; get; }
public string imgchange { set; get;}
public string javascript { set; get; }
}
将 DataTable _menuOption 转换为带有递归关系的List<EasyUITreeNode> 集合
//获取根节点
public List<EasyUITreeNode> GetTreeNode(DataTable _menuOtion)
{
DatatableToList<SYS_MENUANDMEMBER> list = new DatatableToList<SYS_MENUANDMEMBER>();
menuList = list.ConvertTolist(_menuOtion);//将 DataTable数据转换为list
List<SYS_MENUANDMEMBER> menulistNode = menuList.Where(m => m.parent == 0).ToList() 获取菜单的跟菜单,祖先菜单
List<EasyUITreeNode> treeList = new List<EasyUITreeNode>();
if (menulistNode.Count < 1)//为空,返回空值
{
return null;
}
else //不为空 则将 menulistNode 转换为 EasyUITreeNode
{
for (int i = 0; i < menulistNode.Count; i++)
{
EasyUITreeNode tree = new EasyUITreeNode();
tree.id = menulistNode[i].id.ToString();
tree.text = menulistNode[i].name;
tree.level = menulistNode[i].levels.ToString();
tree.link = menulistNode[i].link;
tree.parentid = menulistNode[i].parent.ToString();
tree.iscontainer = menulistNode[i].iscontainer;
tree.visible = menulistNode[i].visible; //tree.iconCls = "panel-tool-collapse";
tree.iconCls = menulistNode[i].imgchange;
tree.state = "closed"; tree.children = GetTreeChildren(menulistNode[i].id);将根菜单的id作为其下级菜单的parentid,获取其下属的菜单
treeList.Add(tree); }
return treeList;
}
} //获取子节点
private List<EasyUITreeNode> GetTreeChildren(Int32 p) 方法原理同其上次菜单获取的原理相同
{
List<SYS_MENUANDMEMBER> menulistChildred = menuList.Where(m => m.parent.Equals(p)).ToList(); List<EasyUITreeNode> treeList = new List<EasyUITreeNode>();
if (menulistChildred.Count < 1)
{
return null;
}
else
{
for (int i = 0; i < menulistChildred.Count; i++)
{
EasyUITreeNode tree = new EasyUITreeNode();
tree.id = menulistChildred[i].id.ToString();
tree.text = menulistChildred[i].name;
tree.level = menulistChildred[i].levels.ToString();
tree.link = menulistChildred[i].link;
tree.parentid = menulistChildred[i].parent.ToString();
tree.iscontainer = menulistChildred[i].iscontainer;
tree.visible = menulistChildred[i].visible;
//tree.iconCls = menulistChildred[i].image;
tree.iconCls = menulistChildred[i].imgchange; //tree.state = "closed";
tree.children = GetTreeChildren(menulistChildred[i].id);//一步步递归,最后将会得到一个具有层层递归关系的集合
treeList.Add(tree); }
return treeList;
}
}
 #region Datatable转List
public class DatatableToList<T> where T : new()
{
public List<T> ConvertTolist(DataTable dt)
{
List<T> ts = new List<T>();
Type type = typeof(T);
string tempName = "";
foreach (DataRow dr in dt.Rows)
{
T t = new T();
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
tempName = pi.Name;
if (dt.Columns.Contains(tempName))
{
if (!pi.CanWrite) continue;
object value = dr[tempName];
if (value != DBNull.Value)
pi.SetValue(t, value, null);
} } ts.Add(t);
}
return ts;
}
}
#endregion

  

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

  

  

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

  关于数据库的设计可以参考我的另一篇随笔 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. C# 文件的上传和下载

    本文主要介绍一下,在APS.NET中文件的简单上传于下载,上传是将文件上传到服务器的指定目录下,下载是从存入数据库中的路径,从服务器上下载. 1.上传文件 (1)页面代码 <table alig ...

  2. [转载]历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX

    原文地址:历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉化版)下载作者:盖世天星 历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉 ...

  3. Rsync for windows

    说到电脑,我真是一屋子都是. 从房间到大厅,就已经有5台.这还没包括服务器. 虽然这5台电脑我最常用的也只是2~3台.其他的不是给朋友们来坐的时候打打游戏.就是给妈妈上网看看报纸. 不过我相信很多朋友 ...

  4. 团队作业1 团队展示&选题

    团队展示&选题 Coding项目地址:https://git.coding.net/wjunren/running.git 一.团队展示 1.队名:Runing Guys 2.队员: 组长:骆 ...

  5. 团队作业8——第二次项目冲刺(Beta阶段)Day6——5.25

    1.提供当天会议照片: 2.会议的内容: (1)讨论已经完成的功能,讨论存在的问题 (2)对于界面,谈谈各自的看法 (3)讨论接下来的任务和改进的地方 3.工作安排: 队员 今日任务 明日任务 贡献比 ...

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

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

  7. 201521123111 《Java程序设计》第1周学习总结

    Java 第一周学习 1.刚开始学习对java还是陌生的,完全不清楚.通过刚开始的上课,有一点点的了解.刚开始可能相对比较基础,进程有点快,而且多媒体屏幕有点反光,所以还是蛮多不懂的.接下来应该好好努 ...

  8. 201521123106 《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  9. mybatis-分页显示数据

    分页用到的两个实体类 package com.yangwei.shop.entity; /** * 注意 get,set,remove 方法与一般的实体类的不同*/ public class Syst ...

  10. 支持语音识别、自然语言理解的微信小程序(“遥知之”智能小秘)完整源码分享

    记录自己搭建https的silk录音文件语音识别服务的调用过程,所有代码可在文中找链接打包下载 >>>>>>>>>>>>> ...