LigerUI权限系统之菜单管理
菜单管理跟上篇的组织结构实现方式差不多,所以不存在多大的问题。还是老样,先上图,再看代码。菜单管理界面

菜单管理添加:

菜单管理修改:

前端完整代码:
 @section headerScripts{
     <style type="text/css">
         #grid {
             margin-left: 10px;
             margin-top: 10px;
         }
     </style>
     <script type="text/javascript">
         var UrlMenuDataSource = '@Url.Action("MenuDataSource")';
         var UrlParentNode = '@Url.Action("ParentNode")';
         var UrlAddMenu = '@Url.Action("AddMenu")';
         var UrlModifyMenu = '@Url.Action("ModifyMenu")';
         var UrlDeleteMenu = '@Url.Action("DeleteMenu")';
         $(function () {
             $("#grid").ligerGrid({
                 columns: [
                 { display: '页面名称', name: 'name', id: 'tree1', align: 'left', width: '30%' },
                 { display: '排列序号', name: 'tindex', type: 'int', align: 'left', width: '30%' },
                 { display: '访问地址', name: 'url', align: 'left', width: '30%' },
                 { display: '页面ID', name: 'rid', hide: 'hide', width: '1%' },
                 { display: '页面父ID', name: 'parentrid', hide: 'hide', width: '1%' }
                 ],
                 width: '98%',
                 pageSizeOptions: [, , ],
                 height: '100%',
                 rowHeight: ,
                 headerRowHeight: ,
                 url: UrlMenuDataSource,
                 alternatingRow: true,
                 tree: { columnId: 'tree1' },
                 dataAction: 'local',
                 toolbar: {
                     items: [
                    { text: '增加', click: AddMenu, img: '@Url.Content("~/Content/LigerUI/icons/add.gif")' },
                    { line: true },
                    { text: '修改', click: ModifyMenu, img: '@Url.Content("~/Content/LigerUI/icons/modify.gif")' },
                    { line: true },
                    { text: '删除', click: DeleteMenu, img: '@Url.Content("~/Content/LigerUI/icons/delete.gif")' }
                     ]
                 }
             }
             );
             //添加
             function AddMenu() {
                 if (!window.addWin) {
                     window.addWin = $.ligerDialog.open({
                         target: $("#winAdd"),
                         height: ,
                         width: ,
                         title: "增加菜单",
                         isHidden: false
                     });
                     $("#txtParentNode").ligerComboBox(
                        {
                            url: UrlParentNode,
                            valueField: 'rid',
                            textField: 'name',
                            selectBoxWidth: ,
                            autocomplete: true,
                            width: ,
                            hideOnLoseFocus: true,
                            css: 'combo'
                        }
                    );
                     $("#btnCancel").click(function () {
                         window.addWin.hide();
                     });
                     $("#btnConfirm").click(function () {
                         var parentNode = $("#txtParentNode").ligerComboBox().getValue();
                         var pageName = $("#txtPageName").val();
                         var url = $("#txtUrl").val();
                         var index = $("#txtTIndex").val();
                         if (pageName == "" || url == "") {
                             alert("页面名称和访问地址不能为空!");
                             return;
                         }
                         $.post(UrlAddMenu,
                             { parentNode: parentNode, pageName: pageName, url: url, index: index },
                             function (data) {
                                 if (data.result) {
                                     alert("操作成功!");
                                     $("#grid").ligerGrid().reload();
                                 } else {
                                     alert(data.msg);
                                 }
                             });
                     });
                 } else {
                     window.addWin.show();
                 }
             }
             //修改
             function ModifyMenu() {
                 var ModifyDialog;
                 var grid = $("#grid").ligerGrid();
                 var row = grid.getSelectedRow();
                 if (row == null) {
                     alert("请选择一条数据");
                     return;
                 }
                 $("#winModify").data("name",row.name);
                 $("#winModify").data("tindex",row.tindex);
                 $("#winModify").data("url", row.url);
                 $("#winModify").data("rid", row.rid);
                 $("#winModify").data("parentrid", row.parentrid);
                 if (!window.modifyWin) {
                     window.modifyWin = $.ligerDialog.open({
                         target: $("#winModify"),
                         height: ,
                         width: ,
                         title: "修改菜单"
                     });
                     $("#txtModifyPageName").val( $("#winModify").data("name"));
                     $("#txtIndex").val( $("#winModify").data("tindex"));
                     $("#txtModifyUrl").val($("#winModify").data("url"));
                     $("#txtRid").val($("#winModify").data("rid"));
                     $("#txtParentRid").val( $("#winModify").data("parentrid"));
                     $("#btnModifyCancel").click(function () {
                         window.modifyWin.hide();
                     });
                     $("#btnModifyConfirm").click(function () {
                         var pageName = $("#txtModifyPageName").val();
                         var index = $("#txtIndex").val();
                         var url = $("#txtModifyUrl").val();
                         var rid = $("#txtRid").val();
                         var parentrid = $("#txtParentRid").val();
                         if (pageName == "" || url == "") {
                             alert("页面名称和访问地址不能为空");
                             return;
                         }
                         $.post(UrlModifyMenu, { pageName: pageName, index: index, url: url, rid: rid, parentrid: parentrid }, function (data) {
                             if (data.result) {
                                 alert("操作成功!");
                                 $("#grid").ligerGrid().reload();
                             } else {
                                 alert(data.msg);
                             }
                         });
                     });
                 } else {
                     $("#txtModifyPageName").val($("#winModify").data("name"));
                     $("#txtIndex").val($("#winModify").data("tindex"));
                     $("#txtModifyUrl").val($("#winModify").data("url"));
                     $("#txtRid").val($("#winModify").data("rid"));
                     $("#txtParentRid").val($("#winModify").data("parentrid"));
                     window.modifyWin.show();
                 }
             }
             //删除
             function DeleteMenu() {
                 var grid = $("#grid").ligerGrid();
                 var row = grid.getSelectedRow();
                 if (row == null) {
                     alert("请选择一条数据");
                     return;
                 }
                 if (confirm("是否确定删除?")) {
                     $.post(UrlDeleteMenu, { rid: row.rid }, function (data) {
                         if (data.result) {
                             alert("删除成功!");
                             $("#grid").ligerGrid().reload();
                         } else {
                             alert(data.msg);
                         }
                     });
                 }
             }
         });
     </script>
 }
 <div id="grid"></div>
 <div id="winAdd" style="display: none;">
     <table class="tb" style="height: 170px;">
         <tr class="tr">
             <td class="td">父级:</td>
             <td>
                 <input id="txtParentNode" /></td>
         </tr>
         <tr class="tr">
             <td class="td">页面名称:</td>
             <td>
                 <input id="txtPageName" type="text" /></td>
         </tr>
         <tr class="tr">
             <td class="td">访问地址:
             </td>
             <td>
                 <input id="txtUrl" type="text" />
             </td>
         </tr>
         <tr class="tr">
             <td class="td">排列序号:
             </td>
             <td>
                 <input id="txtTIndex" type="text" />
             </td>
         </tr>
         <tr class="tr">
             <td colspan="">
                 <button id="btnConfirm" class="ui-button">确定</button>
                 <button id="btnCancel" class="ui-button">取消</button>
             </td>
         </tr>
     </table>
 </div>
 <div id="winModify" style="display: none;">
     <table class="tb" style="height: 170px;">
         <tr class="tr">
             <td class="td">页面名称:</td>
             <td>
                 <input id="txtModifyPageName" type="text" /></td>
         </tr>
         <tr class="tr">
             <td class="td">排列序号:</td>
             <td>
                 <input id="txtIndex" /></td>
         </tr>
         <tr class="tr">
             <td class="td">访问地址:
             </td>
             <td>
                 <input id="txtModifyUrl" type="text" />
                 <input id="txtRid" type="hidden" />
                  <input id="txtParentRid" type="hidden" />
             </td>
         </tr>
         <tr class="tr">
             <td colspan="">
                 <button id="btnModifyConfirm" class="ui-button">确定</button>
                 <button id="btnModifyCancel" class="ui-button">取消</button>
             </td>
         </tr>
     </table>
 </div>
后端完整代码:
public class MenuController : Controller
{
//
// GET: /Menu/ private IMenuRepository _menuRepository; public MenuController(IMenuRepository menuRepository)
{ this._menuRepository = menuRepository;
} public ActionResult Index()
{
return View();
} public JsonResult MenuDataSource()
{ var data = _menuRepository.GetMenuParentsNode().ToList(); var list = new List<dynamic>(); foreach (var item in data)
{
var children = _menuRepository.GetMenuChildrenNodeByParentId(item.rid).ToList(); if (children == null || children.Count() == )
{
list.Add(new
{
name = item.name,
tindex = item.tindex,
url = item.url,
rid=item.rid,
parentrid = item.parentrid
});
}
else
{
list.Add(new
{
name = item.name,
tindex = item.tindex,
url = item.url,
rid = item.rid,
parentrid = item.parentrid,
children = children.Select(m => new {
name = m.name,
tindex = m.tindex,
url = m.url,
rid = m.rid,
parentrid = m.parentrid
})
});
}
} return Json(new
{
Rows = list,
Total = list.Count()
}, JsonRequestBehavior.AllowGet); } public JsonResult ParentNode()
{ var data = _menuRepository.GetMenuParentsNode().ToList(); return Json(data, JsonRequestBehavior.AllowGet);
} public JsonResult AddMenu(int? parentNode, string pageName, string url,int?index)
{
var check = _menuRepository.GetMenuByCondition(pageName, url); if (check.Count() > )
{
return Json(new { result = false, msg = "修改失败,已存在相同的菜单!" }, JsonRequestBehavior.AllowGet);
}
var menu = new t_resources()
{
name = pageName,
url = url,
parentrid = parentNode,
tindex=index
}; try
{
var result= _menuRepository.AddMenu(menu);
if (result)
{
return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
}
}
catch (Exception ex)
{
return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
}
} public JsonResult DeleteMenu(int rid)
{
var menu = new t_resources()
{
rid=rid
}; try
{
var result = _menuRepository.DeleteMenu(menu);
if (result)
{
return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
}
}
catch (Exception ex)
{
return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
}
} public JsonResult ModifyMenu(string pageName, int? index, string url, int rid, int? parentrid)
{
var check = _menuRepository.GetMenuByCondition(pageName,url); if (check.Count() > ) {
return Json(new { result = false, msg = "修改失败,已存在相同的菜单!" }, JsonRequestBehavior.AllowGet);
} var menu = new t_resources()
{
name=pageName,
tindex=index,
url=url,
rid=rid,
parentrid=parentrid
}; try
{
var result = _menuRepository.UpdateMenu(menu);
if (result)
{
return Json(new { result = true, msg = "" }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { result = false, msg = "操作失败!" }, JsonRequestBehavior.AllowGet);
}
}
catch (Exception ex)
{
return Json(new { result = false, msg = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
}
LigerUI权限系统之菜单管理的更多相关文章
- LigerUI权限系统之用户管理
		
用户管理较之前的的组织结构和菜单管理稍显复杂.不管怎样还是先上图吧,再来讲解 左边是组织结构,右边是用户,用户是跟组织机构挂钩的,通过点击左边的组织结构,来刷新右边,加载该组织机构下的用户. 用户管理 ...
 - LigerUI权限系统之角色管理
		
角色管理比前面几个页面都稍显复杂点.好吧,还是先看图. 左边是角色列表,右边是页面列表,它们也是多对多的关系,即一个角色可以访问多个页面,同时一个页面也可以被多个角色访问. 点击左边的角色,刷新右边页 ...
 - 分享Mvc3+NInject+EF+LigerUI权限系统
		
分享Mvc3+NInject+EF+LigerUI权限系统 前段时间时不时看到有园友的分享权限系统,于是本人突发奇想,也想写一个玩玩,就利用晚上时间,陆陆续续花了一周多样子,写了如今这个权限系统, ...
 - 分享Mvc3+NInject+EF+LigerUI权限系统Demo
		
前段时间时不时看到有园友的分享权限系统,于是本人突发奇想,也想写一个玩玩,就利用晚上时间,陆陆续续花了一周多样子,写了如今这个权限系统,这个权限系统具有 组织结构.用户.角色.菜单,组织结构下挂用户, ...
 - LigerUI权限系统之组织结构
		
先上图,再看代码.组织结构界面 组织结构添加: 组织结构修改: 组织结构删除: 我在做这个页面的时候treegrid 的远程数据加载让我很头痛,从LigerUI官网提供的Demo来看,它是根据json ...
 - 手摸手,带你用vue实现后台管理权限系统及顶栏三级菜单显示
		
手摸手,带你用vue实现后台管理权限系统及顶栏三级菜单显示 效果演示地址 项目demo展示 重要功能总结 权限功能的实现 权限路由思路: 根据用户登录的roles信息与路由中配置的roles信息进行比 ...
 - 分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)
		
阅读目录 简介 系统特色 系统介绍 - 首页 系统介绍 - 列表页 系统介绍 - 明细页(表单) 系统介绍 - 菜单/按钮 系统介绍 - 权限中心 系统介绍 - 数据权限 系统介绍 - 字段权限 系统 ...
 - TP支持菜单动态生成RBAC权限系统数据库结构设计方案
		
最简单基于RBAC权限系统数据库结构设计 包括如下几个表 1. 用户表 -- Table "t_user" DDL CREATE TABLE `t_user` ( `id` int ...
 - netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源
		
AntMgr https://github.com/yuzd/AntMgr 基于netcore2.0 mvc 开发的 快速搭建具有如下特色的后台管理系统 特色: 用户管理 菜单管理 角色管理 权限管理 ...
 
随机推荐
- centos7的安装
			
初装centos7还是在九月份,那时候关于win7 下centos7硬盘安装的资料很少,现在就好多, 在这里备份下东西吧 首先是安装的时候,关于找从那个地方找image的问题. hda ,sda分别表 ...
 - MVC4 学习笔记01
			
1 . ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别是什么?要注意什么吗? ActionResult 是一个抽象(abstract)类,ViewRes ...
 - ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录
			
ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录 求助!!ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录. 登录管理员账户时,输入password后,一直在登录界面循 ...
 - vs.net 2013 Saffolding功能扩展
			
vs.net 2013 Saffolding功能扩展 Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个&l ...
 - mvc之验证IEnumerable<T> 类型,多选框验证
			
原文:mvc之验证IEnumerable<T> 类型,多选框验证 假设我们有这么一种需求,我们要同时添加年级和年级下面的多个班级,我们一般会像下面这种做法. Action中我们这样接收: ...
 - svg的自述
			
svg可缩放矢量图形(Scalable Vector Graphics). SVG 使用 XML 格式定义图像. SVG 是使用 XML 来描述二维图形和绘图程序的语言. 什么是SVG? SVG 指可 ...
 - 非常多人不愿意承认汉澳sinox已经超过windows
			
汉澳sinox採用的zfs和jail打造高可靠性存储server和矩阵计算机,这不是windows和linux能相提并论的. 只是非常多人立即出来出来反驳说,windows驱动程序多(就是支持硬件多) ...
 - 学习Swift写iOS?那写安卓和WinPhone呢?请看一石三鸟终极解决方案 - Silver!
			
首先,你必须知道的是,Silver是苹果最新编程语言Swift的免费实现版本. 通过Silver,你可以使用Swift语言来编写.NET,Java,安卓和Cocoa APIs.你甚至可以在这些平台上共 ...
 - PHP 5:PHP语法导向
			
原文:PHP 5:PHP语法导向 代码 ...
 - SQL点滴13—收集SQLServer线程等待信息
			
原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信 ...