easyui加载json菜单的相关代码
/**
* 取菜单数据
*/
$(function getmenujson() {
$.ajax({
type: "GET",
cache: false,
url: "/ClientsData/GetMenuJson",
datatype: "json",
success: function (db) {
getmenuhtml(JSON.parse(db));
sidebar();
}
})
});
/**
* 显示json模板侧边栏菜单
*/
function getmenuhtml (jsondata){
var div = "";
$.each(jsondata, function (i, sm) {
var htmlli = "";
htmlli += '<ul id="pr-side-tree" class="easyui-tree pr-side-tree">';
$.each(sm.menus, function (o, j) {
htmlli += '<li iconCls="' + j.icon + '"><a href="javascript:void(0)" data-icon="' + j.icon + '" data-link="' + j.url + '" iframe="0">' + j.title + '</a></li>';
});
htmlli += '</ul>';
div = '<div id='+sm.id +' title=' + sm.title + ' data-options="iconCls:\'' + sm.icon + '\'" style="padding:5px;" >' + htmlli + '</div>';
$('#pr-accordion').accordion('add', { title: sm.title, iconCls: sm.icon, content: div })
}
);
$('#pr-accordion').accordion({
autoHeight: false,
navigator: true
});
}
/**
* 侧边栏菜单点击事件
*/
function sidebar() {
$('#pr-side-tree a').bind("click", function () {
var id = $(this).id();
var title = $(this).text();
var url = $(this).attr('data-link');
var iconCls = $(this).attr('data-icon');
var iframe = $(this).attr('iframe') == 1 ? true : false;
addTab(id,title, url, iconCls, iframe);
});
};
/**
* Name 载入树形菜单
*/
$('#pr-side-tree').tree({
url: 'temp/menu.php',
cache: false,
onClick: function (node) {
var url = node.attributes['url'];
if (url == null || url == "") {
return false;
}
else {
addTab(node.id,node.text, url, '', node.attributes['iframe']);
}
}
});
/**
* Name 选项卡初始化
*/
$('#pr-tabs').tabs({
tools: [{
iconCls: 'icon-reload',
border: false,
handler: function () {
$('#pr-datagrid').datagrid('reload');
}
}]
});
/**
* Name 添加菜单选项
* Param title 名称
* Param href 链接
* Param iconCls 图标样式
* Param iframe 链接跳转方式(true为iframe,false为href)
*/
function addTab(id, title, href, iconCls, iframe) {
if (Id != "") {
top.$.cookie('Pray_currentmoduleid', Id, { path: "/" });
}
var tabPanel = $('#pr-tabs');
if (!tabPanel.tabs('exists', title)) {
var content = '<iframe scrolling="auto" frameborder="0" src="' + href + '" style="width:100%;height:100%;"></iframe>';
if (iframe) {
tabPanel.tabs('add', {
title: title,
content: content,
iconCls: iconCls,
fit: true,
cls: 'pd3',
closable: true
});
}
else {
tabPanel.tabs('add', {
title: title,
href: href,
iconCls: iconCls,
fit: true,
cls: 'pd3',
closable: true
});
}
}
else {
tabPanel.tabs('select', title);
//触发点击事件
$("#tab_menu-tabrefresh").trigger("click");
}
//隐藏侧边栏
// $(".layout-button-left").trigger("click");
}
/**
* Name 移除菜单选项
*/
function removeTab() {
var tabPanel = $('#pr-tabs');
var tab = tabPanel.tabs('getSelected');
if (tab) {
var index = tabPanel.tabs('getTabIndex', tab);
tabPanel.tabs('close', index);
}
}
/**
* 绑定选项卡右键事件
*/
$(document).ready(function () {
//监听右键事件,创建右键菜单
$('#pr-tabs').tabs({
onContextMenu: function (e, title, index) {
//屏闭右键
e.preventDefault();
//右键选中
$('#pr-tabs').tabs('select', title);
if (index > 0) {
//记录title,然后显示右键
$('#mm').menu('show', {
left: e.pageX,
top: e.pageY
}).data("tabTitle", title);
}
}
})
});
/**
* 右键菜单点击事件
*/
$("#mm").menu({
onClick: function (item) {
closeTab(this, item.name);
}
});
//删除Tabs
function closeTab(menu, type) {
var tabPanel = $('#pr-tabs');
var allTabs = tabPanel.tabs('tabs');
var allTabtitle = [];
$.each(allTabs, function (i, n) {
var opt = $(n).panel('options');
if (opt.closable)
allTabtitle.push(opt.title);
});
var curTabTitle = $(menu).data("tabTitle");
var curTabIndex = tabPanel.tabs("getTabIndex", tabPanel.tabs('getSelected'));
switch (type) {
case 1://关闭当前
tabPanel.tabs("close", curTabIndex);
return false;
break;
case 2://全部关闭
$.messager.confirm('警告','确定关闭所有窗口?',function(r){
if (r){
for (var i = 0; i < allTabtitle.length; i++) {
tabPanel.tabs('close', allTabtitle[i]);
}
}
});
break;
case 3://除此之外全部关闭
for (var i = 0; i < allTabtitle.length; i++) {
if (curTabTitle != allTabtitle[i])
tabPanel.tabs('close', allTabtitle[i]);
}
tabPanel.tabs('select', curTabTitle);
break;
case 4://当前侧面右边
if (curTabIndex == allTabtitle.length) {
$.messager.show({title:'提示',msg:'右边没有了!'});
break;
}
for (var i = curTabIndex; i < allTabtitle.length; i++) {
tabPanel.tabs('close', allTabtitle[i]);
}
tabPanel.tabs('select', curTabTitle);
break;
case 5: //当前侧面左边
if (curTabIndex == 1)
{
$.messager.show({title:'提示',msg:'左边没有了!'});
break;
}
for (var i = 0; i < curTabIndex - 1; i++) {
tabPanel.tabs('close', allTabtitle[i]);
}
tabPanel.tabs('select', curTabTitle);
break;
case 6: //刷新
var panel = tabPanel.tabs("getTab", curTabTitle).panel("refresh");
break;
}
}
网页
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="copyright" content="All Rights Reserved, Copyright (C) 2013, Wuyeguo, Ltd." />
<title>EasyUI Web Admin Power by LiGanWei</title>
<link rel="stylesheet" type="text/css" href="~/Content/easyui/1.3.4/themes/default/easyui.css" />
<link rel="stylesheet" type="text/css" href="~/Content/css/framework-home.css" />
<link rel="stylesheet" type="text/css" href="~/Content/css/framework-icon.css" />
<script type="text/javascript" src="~/Content/js/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="~/Content/easyui/1.3.4/jquery.easyui.min.js"></script>
<script type="text/javascript" src="~/Content/easyui/1.3.4/locale/easyui-lang-zh_CN.js"></script>
</head>
<body class="easyui-layout">
<!-- 页头 -->
<div class="pr-header" data-options="region:'north',border:false,split:true">
<div class="pr-header-left">
<h1>EasyUI Web Admin</h1>
</div>
<div class="pr-header-right">
<p><strong class="easyui-tooltip" title="2条未读消息">admin</strong>,欢迎您!</p>
<p><a href="#">网站首页</a>|<a href="#">支持论坛</a>|<a href="#">帮助中心</a>|<a href="#">安全退出</a></p>
</div>
</div>
<!-- end页头 -->
<!-- 侧边栏 -->
<div class="pr-sidebar" data-options="region:'west',split:true,border:true,title:'导航菜单'">
<div id="pr-accordion" class="easyui-accordion" data-options="border:false,fit:true">
</div>
</div>
<!-- end侧边栏 -->
<!-- begin 主体 -->
<div class="pr-main" data-options="region:'center'">
<div id="pr-tabs" class="easyui-tabs" data-options="border:false,fit:true">
<div title="首页" data-options="href:'/Home/Default',closable:false,iconCls:'icon-tip',cls:'pd3'"></div>
</div>
</div>
<!-- end 主体 -->
<!-- begin 结尾 -->
<div class="pr-footer" data-options="region:'south',border:true,split:true">
© 2018 Li All Rights Reserved
</div>
<!-- end 结尾 -->
<div id="mm" class="easyui-menu" style="width:120px;">
<div id="mm-tabclose" data-options="name:6">刷新</div>
<div id="mm-tabclose" data-options="name:1">关闭</div>
<div id="mm-tabcloseall" data-options="name:2">全部关闭</div>
<div id="mm-tabcloseother" data-options="name:3">除此之外全部关闭</div>
<div class="menu-sep"></div>
<div id="mm-tabcloseright" data-options="name:4">当前页右侧全部关闭</div>
<div id="mm-tabcloseleft" data-options="name:5">当前页左侧全部关闭</div>
</div>
<!--菜单-->
<script type="text/javascript" src="~/Content/js/home.js"></script>
</body>
</html>
控制台
public string GetMenuJson ()
{
var list = new MenuApp().GetList();
var MenuList = new List<MenuModel>();
foreach (var item in list)
{
MenuModel tmep = new MenuModel();
tmep.id = item.F_Id;
tmep.icon = item.F_Icon;
tmep.parentId = item.F_ParentId;
tmep.text = item.F_Text;
tmep.link = item.F_Iink;
tmep.iframe = item.F_Iframe;
MenuList.Add(tmep);
}
return Menu.GetMenuJosn(MenuList);
}
easyui加载json菜单的相关代码的更多相关文章
- easyui 加载本地json 文件的方法
easyui 加载本地json 文件的方法 2017年12月15日 17:18:07 vivian_hnd 阅读数 2155 https://blog.csdn.net/vivian_wang07/a ...
- OpenLayers学习笔记(十)— 动态加载JSON数据模拟航迹线
在openlayers 3 上,加载本地json数据,动态绘制航迹线,以飞机当前位置为地图中心,此例子是模拟DEMO 本文链接:动态加载JSON数据模拟航迹线 作者:狐狸家的鱼 GitHub:八至 前 ...
- C#动态加载树菜单
在做权限系统的时候,需要有一个树形的菜单.下图就是一个树形菜单的样式 但问题是,我们可以实现写死的树形菜单.什么是写死的?就是在前台代码中写好要加载的树形菜单是什么样子的.但是我们权限系统的要求是动态 ...
- dojo 加载Json数据
1.今天研究了dojo datagrid加载WebService后台传上来的数据.研究来研究去发现他不是很难.用谷歌多调试一下就好了. 2.看很多例子,这个例子能够更好的帮我解决问题:https:// ...
- 页面三个txt加载联动省市县的代码,类似淘宝的收货地址的布局
页面三个txt加载联动省市县的代码,假如有一个树形的JSON,分别显示的省市县这时候三个TXT怎么做联动效果呢,这里用framework7为例HTML: <div class="lis ...
- angular-translate加载.json文件进行翻译
这是这个demo的目录结构,总共有两个文件:locale-chinese.json和translation11.html locale-chinese.json文件的内容是: { "beau ...
- vue3.0 加载json的“另类”方法(非ajax)
问题 加载json一定要用ajax的方式吗? 最近学习vue3.0,在实现一个功能的时候发现一个问题-- 写代码的时候,需要的json太长.太多,和代码放在一起太混乱.看代码总有翻来翻去,又没有&qu ...
- VS2013无法加载JSON格式
js中通过$.getJSON加载.json 文件时,报如下错误: 解决方案:dos命令中打开 IIS Express ,执行如下命令: appcmd set config /section:stat ...
- ios -网络加载json和本地加载json
1网络加载json的时候,要在模型的实现文件里写: - (void)setValue:(id)value forKey:(NSString *)key { } 2本地加载json的时候,要在模型的实现 ...
随机推荐
- Cocoapods 版本
查看当前安装的版本 gem list 卸载版本 gem uninstall cocoapods 安装 gem install cocoapods gem install cocoapods -v 1. ...
- Oracle JET(一)Oracle JET介绍
Oracle JET (Oracle Javascript Extension Toolkit)是一款 Oracle 的 JavaScript 拓展工具包.简单来说 Oracle JET 是一个一堆好 ...
- Oracle-buffer cache、shared pool
http://blog.csdn.net/panfelix/article/details/38347059 buffer pool 和shared pool 详解 http://blog.csd ...
- loj#6157 A ^ B Problem
分析 用并查集维护 每次一个连通块的每个点记录它到当前连通块的根的异或值 对于不符合的情况容易判断 最后判断是否都在一个连通块内然后记录答案即可 代码 #include<bits/stdc++. ...
- debugfs linux rm 删除 恢复 Attempt to read block from filesystem resulted in short read while opening filesystem
w 删除具有空字符的文件 反斜杠来转义下一个字符 rm -R Samples\ -\ Copy well@well:/home/etc/project/apilinux/MarketplaceWebS ...
- C++中让人忽视的左值和右值
前言 为了了解C++11的新特性右值引用,不得不重新认识一下左右值.学习之初,最快的理解,莫过于望文生义了,右值那就是赋值号右边的值,左值就是赋值号左边的值.在中学的数学的学习中,我们理解的是,左值等 ...
- Nginx主要功能及使用
Nginx配置详解 序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富, ...
- Vue入门---安装及常用指令介绍
1.安装 BootCDN----官网https://www.bootcdn.cn/ <script src="https://cdn.bootcss.com/vue/2.6.10/vu ...
- (4.23)SQL Server中的加密
转自:https://www.cnblogs.com/CareySon/archive/2012/04/01/SQL-SERVER-Encryption.html 简介 加密是指通过使用密钥或密码对数 ...
- Elasticsearch安装及遇到的问题(CentOS 7.3 64位)
Elasticsearch安装 使用root用户创建一个其他用户,(elasticsearch不能在root账户下安装) # 添加一个名字是es工作组 groupadd es # 添加用户es设置密码 ...