前端界面:

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.cs" Inherits="EasyUIWeb.Home" %>

 <!DOCTYPE html>

 <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>EasyUi--权限管理</title>
<link href="Script/jquery-easyui-1.7.0/themes/default/easyui.css" rel="stylesheet" />
<link href="css/gu.css" rel="stylesheet" />
<link href="css/icon.css" rel="stylesheet" />
<script src="Script/jquery-easyui-1.7.0/jquery.min.js"></script>
<script src="Script/jquery-easyui-1.7.0/jquery.easyui.min.js"></script>
<script src="Script/jquery-easyui-1.7.0/locale/easyui-lang-zh_CN.js"></script>
<script src="Script/Public/Common.js"></script>
<script src="Script/LoadNav.js"></script>
<script type="text/javascript">
$(function () {
function getWidth(percent) {
return parseInt(document.body.clientWidth * percent);
}
function getHight(percent) {
return parseInt(document.body.clientHeight * percent);
} //动态改变大小
$(window).resize(function () {
});
});
</script>
</head>
<body class="easyui-layout">
<div class="wu-header" data-options="region:'north',border:false,split:true">
<div class="wu-header-left">
<h1>EasyUI Web Admin</h1>
</div>
<div class="wu-header-right">
<p><span id="span_userName" style="color: red"><strong class="easyui-tooltip" title="2条未读消息">admin</strong></span>,欢迎您!</p>
</div>
</div> <div class="wu-sidebar" data-options="region:'west',split:true,border:true,title:'导航菜单'">
<div class="easyui-accordion" data-options="border:false,fit:true" id="RightAccordion"> </div>
</div> <div class="wu-main" data-options="region:'center'">
<div id="wu-tabs" class="easyui-tabs" data-options="border:false,fit:true">
<div title="首页" data-options="closable:false,iconCls:'icon-tip',cls:'pd3'">
<iframe scrolling="auto" frameborder="0" src="Pages/BuyBill.aspx" style="width: 100%; height: 99%;"></iframe>
</div>
</div>
</div> <div class="wu-footer" data-options="region:'south',border:true,split:false">
&copy; 2013 Wu All Rights Reserved
</div>
</body>
</html>

JS代码:

 $(function () {
function getWidth(percent) {
return document.body.clientWidth * percent;
} $("#RightAccordion").accordion({ //初始化accordion
fillSpace: true,
fit: true,
border: false,
animate: false
}); $.ajax({
type: 'post',
dataType: "json",
url: "/Handlers/MenuHandler.ashx?action=LoadUserAuthorizeMenu&userId=" + userId + "&menuParId=1",
success: function (data) {
$.each(data, function (i, n) {
var menuId = n.id;
$('#RightAccordion').accordion('add', {
title: n.text,
selected: true,
iconCls: n.iconCls,
content: ' <div title="' + n.text + '"><ul class="easyui-tree wu-side - tree" id="tree' + menuId + '" ></ul></div> '
});
$.parser.parse(); $.getJSON(
"/Handlers/MenuHandler.ashx?action=LoadUserAuthorizeMenu&userId=" + userId + "&menuParId=" + menuId,
function (result) {
$("#tree" + menuId).tree({
data: result,
onBeforeExpand: function (node, param) {
$("#tree" + menuId).tree('options').url = "/Handlers/MenuHandler.ashx?action=LoadUserAuthorizeMenu&userId=" + userId + "&menuParId= " + node.id;
},
onClick: function (node) {
if (node.state == 'closed') {
$(this).tree('expand', node.target);
} else if (node.state == 'open') {
$(this).tree('collapse', node.target);
var tabTitle = node.text;
var url = node.menuUrl;
var icon = node.iconCls;
addTab(tabTitle, url, icon);
}
}
})
}
)
})
} })
}) //选项卡
function addTab(title, url, icon) {
if ($('#wu-tabs').tabs('exists', title)) {
$('#wu-tabs').tabs('select', title);
} else {
var content = '<iframe scrolling="auto" frameborder="0" src="' + url + '" style="width:100%;height:99.5%;"></iframe>';
$('#wu-tabs').tabs('add', {
title: title,
content: content,
iconCls: icon,
fit: true,
cls: 'pd3',
closable: true
});
}
}

处理逻辑:

 MenuHandle.ashx:
public class MenuHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
var action = Request.GetQueryString("Action");
try
{
switch (action)
{
case "LoadUserAuthorizeMenu":
this.LoadUserAuthorizeMenu(context);
break;
default:
break;
};
}
catch (Exception ex)
{
Response.OutResult(context, new MsgResult() { Success = false, Message = ex.ToString() });
}
}      private void LoadUserAuthorizeMenu(HttpContext context)
{
int userId = Request.GetQueryInt("userId", );
int menuParId = Request.GetQueryInt("menuParId", ); List<Model_Navigation> menuList = new BLL_Menu().GetUserMenuData(userId, menuParId);
if (menuList != null && menuList.Count > )
{
for (int i = ; i < menuList.Count; i++)
{
string where = "menuParId= " + menuList[i].id;
if(new BLL_Menu().GetMenuTable(where).Count > )
{
menuList[i].state = "closed";
}
else
{
menuList[i].state = "open";
}
}
} string jsonStr = JsonConvert.SerializeObject(menuList);
Response.WriteJson(context, jsonStr);
}
}
 BLL_Menu.cs
public class BLL_Menu
{
private readonly DAL_Menu dal = new DAL_Menu(); public List<Model_Navigation> GetUserMenuData(int userId, int menuParId)
{
DataSet ds = this.dal.GetUserMenuData(userId, menuParId);
return ModelHandler<Model_Navigation>.FillModel(ds.Tables[]);
} public List<Model_tb_menu> GetMenuTable(string where)
{
DataSet ds = this.dal.GetMenuTable(where);
return ModelHandler<Model_tb_menu>.FillModel(ds.Tables[]);
}
} DAL_Menu.cs
public class DAL_Menu
{
public DataSet GetUserMenuData(int userId, int menuParId)
{
string sql = @"SELECT distinct(m.menuName) as text, m.menuId as id, m.menuIcon as iconCls, m.menuParId, m.menuUrl FROM tb_users users
INNER JOIN dbo.tb_users_role ur ON users.userId = ur.userId
INNER JOIN dbo.tb_role_menu_button rmb ON ur.roleId = rmb.roleId
INNER JOIN dbo.tb_menu m ON rmb.menuId = m.menuId
WHERE users.userId = " + userId + " AND m.menuParId = " + menuParId + " order by m.menuParId"; return DbHelperSQL.Query(sql);
} public DataSet GetMenuTable(string where)
{
StringBuilder sbSql = new StringBuilder();
sbSql.Append("SELECT menuId AS id, menuName AS text, menuIcon AS iconCls, * FROM dbo.tb_menu "); if (!string.IsNullOrEmpty(where))
{
sbSql.Append(" WHERE " + where);
} return DbHelperSQL.Query(sbSql.ToString());
}
}
 Model_tb_menu.cs
[Serializable]
public partial class Model_tb_menu
{
public Model_tb_menu()
{ }
#region Model
public int id { get; set; }
public string text { get; set; }
public string iconCls { get; set; }
private int _menuid;
private int _menuparid;
public string menuParName { get; set; }
private string _menuname;
private string _menucode;
private string _menuurl;
private string _menuicon;
private DateTime? _createtime = DateTime.Now;
private string _createby;
private DateTime? _updatetime = DateTime.Now;
private string _updateby;
public string state { get; set; }
/// <summary>
///
/// </summary>
public int menuId
{
set { _menuid = value; }
get { return _menuid; }
}
/// <summary>
///
/// </summary>
public int menuParId
{
set { _menuparid = value; }
get { return _menuparid; }
}
/// <summary>
///
/// </summary>
public string menuName
{
set { _menuname = value; }
get { return _menuname; }
}
/// <summary>
///
/// </summary>
public string menuCode
{
set { _menucode = value; }
get { return _menucode; }
}
/// <summary>
///
/// </summary>
public string menuUrl
{
set { _menuurl = value; }
get { return _menuurl; }
}
/// <summary>
///
/// </summary>
public string menuIcon
{
set { _menuicon = value; }
get { return _menuicon; }
}
/// <summary>
///
/// </summary>
public DateTime? createTime
{
set { _createtime = value; }
get { return _createtime; }
}
/// <summary>
///
/// </summary>
public string createBy
{
set { _createby = value; }
get { return _createby; }
}
/// <summary>
///
/// </summary>
public DateTime? updateTime
{
set { _updatetime = value; }
get { return _updatetime; }
}
/// <summary>
///
/// </summary>
public string updateBy
{
set { _updateby = value; }
get { return _updateby; }
}
#endregion Model }

效果图:

根据权限显示accordion的更多相关文章

  1. [ASP.NET MVC] 使用CLK.AspNet.Identity提供依权限显示选单项目的功能

    [ASP.NET MVC] 使用CLK.AspNet.Identity提供依权限显示选单项目的功能 CLK.AspNet.Identity CLK.AspNet.Identity是一个基于ASP.NE ...

  2. View页面根据权限显示不同的内容

    1.View中根据权限显示相关操作按钮 @if (CoreTools.CheckAction(HttpContext.Current, "Delete"))        {    ...

  3. 根据权限显示隐藏SharePoint 2010快速启动栏的链接

    转:http://www.360sps.com/Item/ShowAndHiddenLink.aspx 在SharePoint 2010的快速启动栏中可以根据权限来显示或隐藏列表.库.网站的链接,如果 ...

  4. Android无需权限显示悬浮窗, 兼谈逆向分析app

    前言 最近UC浏览器中文版出了一个快速搜索的功能, 在使用其他app的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到UC, 显示这个悬浮窗不需要申请android. ...

  5. odoo10 fields.Selection 根据权限显示不同的selection内容

    摘要:一般作为下拉选项,selection的选项内容是固定,针对一些特殊要求,根据权限组显示不同的selection内容的,可以参考odoo源码的. 前提:基于 odoo10.0 的源码 参考源码1: ...

  6. ongl表达式中得到对象,调用对象方法(OA项目权限显示模块)

    在用户是否拥有某项权限的问题  是这样解决的: 用户登录之后  登录信息是保存在session域中的  通过el表达式可得到登录的对象信息  那么怎样判断用户是否拥有某项权限呢 ?如果没有上图中的判断 ...

  7. 齐博x1会员中心菜单权限显示

    会员中心的菜单可以通过后台设置用户组权限进行显示或者是隐藏.比如商城里的菜单如下: 菜单文件是:\application\shop\member_menu.php return array( 'cms ...

  8. Android无需权限显示悬浮窗

    TYPE_TOAST一直都可以显示, 但是用TYPE_TOAST显示出来的在2.3上无法接收点击事件, 因此还是无法随意使用. 下面是我之前研究后台线程显示对话框的时候记得笔记, 大家可以看看我们项目 ...

  9. ztree已拥有权限显示

    抄自 http://tieba.baidu.com/p/4394654036 $(document).ready(function () { var ID=@ViewBag.id; $.ajax({ ...

随机推荐

  1. CAD

    文件另存为——Autocad.doc.SaveAs   一.前言 使用pyautocad编辑好cad图纸后,往往涉及到一个保存的问题,但是官方文档并未提及,所以只能自己来了,测试了好久,终于是找到了保 ...

  2. 图的dfs遍历模板(邻接表和邻接矩阵存储)

    我们做算法题的目的是解决问题,完成任务,而不是创造算法,解题的过程是利用算法的过程而不是创造算法的过程,我们不能不能陷入这样的认识误区.而想要快速高效的利用算法解决算法题,积累算法模板就很重要,利用模 ...

  3. Codeforces Round #620 (Div. 2)D(LIS,构造)

    #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; ]; int main(){ io ...

  4. 【Python】摄氏度与华氏度互相转化

    Python入门程序,大家可以举一反三,进行各种转换,比如单位转化,货币转化等等,自行发挥即可! 原理:  代码: Tempstr=input("请输入带有符号的温度值:\n")# ...

  5. n阶高精度乘法,(求高阶阶乘)

    先来复习一下小学数学 : 大家还记不记得小学算多位数的乘法是怎么算的? 卖个关子,大家一定要好好想想! 好了,别管到底还能不能想起来我们都要一块复习一下: 我们借助一下源自百度的图片 来复习下 相信大 ...

  6. NIO-BufferAPI

    一 核心要素 capacity (容量):不能为负,不可更改:就是buffer的长度(buffer.length) limit (限制):指第一个不可被读入缓冲区元素的位置:不可为负,若positio ...

  7. php商城数据库的设计 之无限分类

    商品分类,使用无限分类 即: -------如何创建数据表 pid---父级分类id,如果是顶级分类则为0 path---1,用户分类的排序 . 排序示例: 实现逻辑:获取type表的所有分类,ord ...

  8. LNMP调优

    1.编译安装nginx前修改: 在安装包目录下  vim src/core/nginx.h //#号不代表注释 #define nginx_version      1009009 //软件版本号 # ...

  9. Windows下MD5校验

    参考博客:https://www.cnblogs.com/liubinghong/p/9299276.html 参考博客:https://www.jianshu.com/p/1e1d56552e03 ...

  10. const和defin区别

    (1)类型的安全性检查:const常量有数据类型,而define定义宏常量没有数据类型.则编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查(字符替换时可能会产生意料不到的错误 ...