开发者社区> 文艺小青年> 正文

ASP.NET MVC5+EF6+EasyUI 后台管理系统(38)-Easyui-accordion+tree漂亮的菜单导航

简介:
+关注继续查看

系列目录

本节主要知识点是easyui 的手风琴加树结构做菜单导航

有园友抱怨原来菜单非常难看,但是基于原有树形无限级别的设计,没有办法只能已树形展示

先来看原来的效果

改变后的效果,当然我已经做好了,最后只放出代码供大家参考,其实网上也有这方面的资料,但是不是很好用,我还是自己写了

手风琴一直都是比较漂亮和受欢迎的,但是基于树多级别来说,做起来就比较麻烦,所以我这里也用了手风琴加树的模式来做

注:上面的图标都是乱添加的,并不代表意思

进入正文:

首先必须下载一些图标。可以自行百度网页小图标,那资源是非常多了,我在群里也分享了一组3800个的图标,我只拿其中的几百个出来用用,下载的图标都是零散的,我们必须节省用户的带宽,所以要先将图片进行压缩生成CSS样式,这里我用的工具是CSSSatyr,大家可以百度后下载即可,这里我已经为大家随便挑选了几个图片,有些同学可能还不知道有这个方法组图,现在你会了,把你的网站的图片组起来,节省带宽!非常重要,无论是加载还是用户体验都快不少

 

生成的CSS如下

 View Code

对应图片:

右键下载我就可以了

现在怎么用,这个很重要了

原理:首先加载手风琴为第一级目录,再让手风琴生成动态树,再循环获取树的目录

来分析一下代码:

将原来的系统的tree位置代码替换

原来的

<div id="RightTree" style="background-color: #fff;">
            <div class="panel-loading">加载中...</div>
        </div>

替换为

<div id="RightAccordion" class="easyui-accordion" >

加入JS代码

复制代码
<script>
        $(function(){
            jQuery("#RightAccordion").accordion({ //初始化accordion
                fillSpace:true,
                fit:true,
                border:false,
                animate:false  
            });
            $.post("/@info/Home/GetTreeByEasyui", { "id": "0" }, //获取第一层目录
               function (data) {
                   if (data == "0") {
                       window.location = "/Account";
                   }
                   $.each(data, function (i, e) {//循环创建手风琴的项
                       var id = e.id;
                       $('#RightAccordion').accordion('add', {
                           title: e.text,
                           content: "<ul id='tree"+id+"' ></ul>",
                           selected: true,
                           iconCls:e.iconCls//e.Icon
                       });
                       $.parser.parse();
                       $.post("/@info/Home/GetTreeByEasyui?id="+id,  function(data) {//循环创建树的项
                           $("#tree" + id).tree({
                               data: data,
                               onBeforeExpand:function(node,param){  
                                   $("#tree" + id).tree('options').url = "/@info/Home/GetTreeByEasyui?id=" + node.id;
                               },   
                               onClick : function(node){  
                                   if (node.state == 'closed'){  
                                       $(this).tree('expand', node.target);  
                                   }else if (node.state == 'open'){  
                                       $(this).tree('collapse', node.target);  
                                   }else{
                                       var tabTitle = node.text;
                                       var url = "../../" + node.attributes;
                                       var icon = node.iconCls;
                                       addTab(tabTitle, url, icon);
                                   }
                               }
                           });
                       }, 'json');
                   });
               }, "json");
        });
    </script>
复制代码

全面异步,JS已经非常清楚的展现

其中$.parser.parse();是再次加载Easyui

 后台MVC代码

复制代码
        /// <summary>
        /// 获取导航菜单
        /// </summary>
        /// <param name="id">所属</param>
        /// <returns></returns>
        public JsonResult GetTreeByEasyui(string id)
        {
            //加入本地化
            CultureInfo info = Thread.CurrentThread.CurrentCulture;
            string infoName = info.Name;
            if (Session["Account"] != null)
            {
                //加入本地化
                AccountModel account = (AccountModel)Session["Account"];
                List<SysModuleModel> list = homeBLL.GetMenuByPersonId(account.Id, id);
                var json = from r in list
                           select new SysModuleNavModel()
                           {
                               id = r.Id,
                               text = infoName.IndexOf("zh") > -1 || infoName == "" ? r.Name :r.EnglishName,     //text
                               attributes = (infoName.IndexOf("zh") > -1 || infoName == "" ? "zh-CN" : "en-US") + "/" + r.Url,
                               iconCls = r.Iconic,
                               state = (m_BLL.GetList(r.Id).Count > 0) ? "closed" : "open"
                               
                           };


                return Json(json);
            }
            else
            {
                return Json("0", JsonRequestBehavior.AllowGet);
            }
        }
复制代码
复制代码
 public class SysModuleNavModel
    {
        public string id { get; set; }
        public string text { get; set; }
        public string iconCls { get; set; }
        public string attributes { get; set; }
        public string state { get; set; }
        public List<SysModuleNavModel> children { get; set; }
    }
复制代码

目前已经完工,非常漂亮的一次转换。

也完美的支持了英文版本,其实2个是可以并存的,有的用户比较喜欢tree,因为很直观,只是比较丑陋,这个设置应该让用户去自动选择

注:补充一个经常被问到的问题。关于菜单图标不显示,还是原来的图标问题,这是由于你引入CSS的先后顺序问题导致的,请注意引用的先后


本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/3824368.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
EasyUI+JavaWeb奖助学金管理系统[20]-项目总结与展望
本文目录 1. 总结 1.1 管理员新增奖助学金项目 1.2 学生发起申请 1.3 班主任审批 1.4 学院管理员审批 1.5 学校管理员审批 1.6 学生查看申请结果 2. 展望
81 0
EasyUI+JavaWeb奖助学金管理系统[19]-奖助学金审批功能开发
本文目录 1. 本章任务 2. 查看当前待审批的申请 3. 审批功能的开发 4. 总结
89 0
EasyUI+JavaWeb奖助学金管理系统[18]-奖助学金申请功能开发
本文目录 1. 本章任务 2. 数据库表结构分析 3. 学生查看申请记录功能开发 4. 学生发起申请功能开发 5. 总结
172 0
EasyUI+JavaWeb奖助学金管理系统[17]-问题反馈功能开发
本文目录 1. 本章任务 2. 添加菜单 3. 学生问题反馈开发 4. 管理员问题答复功能开发 5. 总结
76 0
EasyUI+JavaWeb奖助学金管理系统[16]-权限管理功能的开发
本文目录 1. 本章任务 2. 页面布局 3. 加载角色对应的菜单 4. 提交角色菜单信息 5. 小结
67 0
EasyUI+JavaWeb奖助学金管理系统[15]-人员管理功能实现
本文目录 1. 本章任务 2. 人员分页浏览的实现 3. 人员新增功能的实现 3. 人员编辑功能的实现 4. 人员删除功能的实现 5. 本章完整源代码 5.1 userManager.html 5.2 CoreServlet.java 5.3 UserDao.java 6. 总结
86 0
EasyUI+JavaWeb奖助学金管理系统[14]-机构新增、编辑、删除的实现
本文目录 1. 本章任务 2. 新增功能的实现 2.1 添加新增弹窗 2.2 页面初始化时加载上级机构列表 2.3 后端提供获取机构列表方法 2.4 点击保存后将内容提交 2.5 后端处理新增保存请求 2.6 测试 3. 编辑功能的实现 4. 删除功能的实现 5. 总结
81 0
EasyUI+JavaWeb奖助学金管理系统[13]-机构分页浏览功能实现
本文目录 1. 本章任务 2. 新建页面 3. 添加数据表格 4. 封装分页查询方法 5. 测试
59 0
EasyUI+JavaWeb奖助学金管理系统[12]-EasyUI中文显示与格式化
本文目录 1. 本章任务 2. EasyUI中文显示 3. 单元格格式化 4. 测试
91 0
EasyUI+JavaWeb奖助学金管理系统[11]-编辑与删除项目的实现
本文目录 1. 本章任务 2. 添加编辑按钮 3. 添加编辑弹窗 4. 点击编辑后弹窗加载当前信息 5. 点击保存后提交表单 6. 后端执行编辑保存 7. 测试
39 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载