/**
* 取菜单数据
*/
$(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">
&copy; 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菜单的相关代码的更多相关文章

  1. easyui 加载本地json 文件的方法

    easyui 加载本地json 文件的方法 2017年12月15日 17:18:07 vivian_hnd 阅读数 2155 https://blog.csdn.net/vivian_wang07/a ...

  2. OpenLayers学习笔记(十)— 动态加载JSON数据模拟航迹线

    在openlayers 3 上,加载本地json数据,动态绘制航迹线,以飞机当前位置为地图中心,此例子是模拟DEMO 本文链接:动态加载JSON数据模拟航迹线 作者:狐狸家的鱼 GitHub:八至 前 ...

  3. C#动态加载树菜单

    在做权限系统的时候,需要有一个树形的菜单.下图就是一个树形菜单的样式 但问题是,我们可以实现写死的树形菜单.什么是写死的?就是在前台代码中写好要加载的树形菜单是什么样子的.但是我们权限系统的要求是动态 ...

  4. dojo 加载Json数据

    1.今天研究了dojo datagrid加载WebService后台传上来的数据.研究来研究去发现他不是很难.用谷歌多调试一下就好了. 2.看很多例子,这个例子能够更好的帮我解决问题:https:// ...

  5. 页面三个txt加载联动省市县的代码,类似淘宝的收货地址的布局

    页面三个txt加载联动省市县的代码,假如有一个树形的JSON,分别显示的省市县这时候三个TXT怎么做联动效果呢,这里用framework7为例HTML: <div class="lis ...

  6. angular-translate加载.json文件进行翻译

    这是这个demo的目录结构,总共有两个文件:locale-chinese.json和translation11.html locale-chinese.json文件的内容是: { "beau ...

  7. vue3.0 加载json的“另类”方法(非ajax)

    问题 加载json一定要用ajax的方式吗? 最近学习vue3.0,在实现一个功能的时候发现一个问题-- 写代码的时候,需要的json太长.太多,和代码放在一起太混乱.看代码总有翻来翻去,又没有&qu ...

  8. VS2013无法加载JSON格式

    js中通过$.getJSON加载.json 文件时,报如下错误: 解决方案:dos命令中打开 IIS Express  ,执行如下命令: appcmd set config /section:stat ...

  9. ios -网络加载json和本地加载json

    1网络加载json的时候,要在模型的实现文件里写: - (void)setValue:(id)value forKey:(NSString *)key { } 2本地加载json的时候,要在模型的实现 ...

随机推荐

  1. array object

    w object(stdClass)#3 (8) { ["MERCHANT_ID"]=> string(11) "MERCHANT_ID" [" ...

  2. fatal: repository 'xxxx' not found

    环境:centOS7  背景:公司代码仓库迁移,因而配置的jenkins自动打包git地址也要跟着变化. 问题描述:git clone http xxxx.git后报错: fatal: reposit ...

  3. oracle DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME, SERVICE_NAMES 及监听参数的说明

    DBID,SID,DB_NAME,DB_DOMAIN,INSTANCE_NAME,DB_UNIQUE_NAME, SERVICE_NAMES 及监听参数的说明 DB 相关的: DBID, SIDPFI ...

  4. C# Thread3——前台线程后台线程

    默认情况下,显示创建的线程都是前台线程,进程会等待内部所有的前台线程执行完才会结束退出 1.默认创建的线程都是前台线程 2.进程会等待所有的前台线程执行完而结束,如果还存在后台线程则会强行中断并且退出 ...

  5. day17跨文件夹导入模块,模块的两种被执行方式,包,直接使用包中模块,包的管理

    复习 ''' 1.模块 -- 一系列功能的集合体,用文件来管理一系列有联系的功能,该文件我们称之为模块,文件名就是模块名 -- import | from...import 来导入模块,从而使用模块中 ...

  6. Linux QQ全新回归

    福音! 2019年10月24日,腾讯官方发布QQ Linux 2.0.0 Beta版本,告示着Linux QQ的回归. 2008年,腾讯曾推出QQ for Linux,但2009年之后就再没有更新过, ...

  7. Parameter setting for Jemeter Post method

    1. create CSV file note: the first line is parameter name 2. Add Controller Edit >Add >Logic C ...

  8. 快速排序 && 寻找第K大(小)的数

    参考:https://minenet.me/2016/08/24/quickSort.html 快速排序 利用分治法可将快速排序的分为三步: 在数据集之中,选择一个元素作为"基准" ...

  9. Tomcat控制台

    一般在安装完成Tomcat之后,我们需要验证tomcat是否安装成功,在浏览器的url中输入:http://127.0.0.1:8080/,就会进入如下的页面(表示安装成功): 在上面的左侧顶部,有一 ...

  10. JavaSE编码试题强化练习6

    1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...