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的时候,要在模型的实现 ...
随机推荐
- uva live 7639 Extreme XOR Sum (暴力+二项式)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- Python编程:从入门到实践—变量和简单数据类型
变量的命名和使用 #!/usr/bin/env python# -*- encoding:utf-8 -*- message ="Hello Python world!"print ...
- 虚拟主机支持apk
扩展名中填写.apk MIME类型中填写apk的MIME类型 application/vnd.android.package-archive
- 十九、python内置函数汇总
'''内置函数abs():取绝对值all():每个元素都为真,才是真any():有一个元素为真即为真bin():十进制转二进制hex():十进制转十六进制int():所有的转成十进制oct():十进制 ...
- awk调用系统命令
cmd = ("the linux command") cmd | getline dk; close(cmd) dk stores the output of the comma ...
- LNMP 搭建 wordpress 站点 安装及配置过程
0x00 环境 阿里云ECS云服务器 CPU:1核 内存:4G 操作系统:Centos 系统盘:100G 0x01 安装及配置 主要使用 nginx . php 和 mysql 注意:如果下面的设置不 ...
- Delphi XE2 之 FireMonkey 入门(27) - 数据绑定: TBindingsList: TBindScope
Delphi XE2 之 FireMonkey 入门(27) - 数据绑定: TBindingsList: TBindScope 如果在编写表达式时, 如果能够随意指认需要的控件就好了(通过 Owne ...
- 跟我学OpenResty(Nginx+Lua)开发目录贴 (转)
使用Nginx+Lua开发近一年的时间,学习和实践了一些Nginx+Lua开发的架构,为了让更多人使用Nginx+Lua架构开发,利用春节期间总结了一份基本的学习教程,希望对大家有用.也欢迎谈探讨学习 ...
- unigui 服务器 是否显示 程序窗口
unigui 服务器 是否显示 程序窗口 servermodule 窗体的这个standaloneserver属性 为false 时 显示窗体. 为true 时 不显示窗体. 哈哈
- 06 使用bbed修复update的数据--01
场景1 表t3 SQL> select * from t3; ID NAME ---------- -------------------- aaa bbbb SQL> update t3 ...