zTree的使用2
前台代码:
@using Models;
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<link type="text/css" href="~/Scripts/zTree/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<script type="text/javascript" src="~/Scripts/zTree/js/jquery.ztree.all-3.5.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery-treeview/lib/jquery.cookie.js"></script>
<style type="text/css">
a
{
text-decoration: none;
color: #000;
}
</style>
<script type="text/javascript">
$(function () {
loadTree();
});//end $ function loadTree(callback) {
//ztree设置
var setting = {
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: null
}
},
view: {
selectedMulti: false
},
callback: {
onClick: zTreeOnClick,
onExpand: onExpand,
onCollapse: onCollapse
}
}; $.ajax({
type: "POST",
url: "/Admin/ChannelManage/GetData",
success: function (data) {
if (data && data.length != 0) {
$.fn.zTree.init($("#tree"), setting, data);
var treeObj = $.fn.zTree.getZTreeObj("tree");
var cookie = $.cookie("z_tree" + window.location);
if (cookie) {
z_tree = JSON.parse(cookie);
for (var i = 0; i < z_tree.length; i++) {
var node = treeObj.getNodeByParam('id', z_tree[i])
treeObj.expandNode(node, true, false)
}
}
if (callback) {
callback();
}
}
}
});
} //end loadTree function zTreeOnClick(event, treeId, treeNode) {
$(".table-data").find("input").val("");
$(".table-data").find("select").val("");
$("#iconUrl").parent().html('<img alt="" src="" id="iconUrl" style="height: 100px;" />');
if (!treeNode.isSite) {
$("#site").val(treeNode.site.title);
$("#title").val(treeNode.channel.title);
if (treeNode.parentChannel) {
$("#parentChannel").val(treeNode.parentChannel.title);
}
else {
$("#parentChannel").val("无");
}
$("#listType").val(treeNode.channel.listType);
$("#displayPos").val(treeNode.channel.displayPos);
$("#sort").val(treeNode.channel.sort);
$("#iconUrl").attr("src", treeNode.channel.iconUrl);
}
} function onExpand(event, treeId, treeNode) {
var cookie = $.cookie("z_tree" + window.location);
var z_tree = new Array();
if (cookie) {
z_tree = JSON.parse(cookie);
}
if ($.inArray(treeNode.id, z_tree) < 0) {
z_tree.push(treeNode.id);
}
$.cookie("z_tree" + window.location, JSON.stringify(z_tree))
} function onCollapse(event, treeId, treeNode) {
var cookie = $.cookie("z_tree" + window.location);
var z_tree = new Array();
if (cookie) {
z_tree = JSON.parse(cookie);
}
var index = $.inArray(treeNode.id, z_tree);
z_tree.splice(index, 1);
for (var i = 0; i < treeNode.children.length; i++) {
index = $.inArray(treeNode.children[i].id, z_tree);
if (index > -1) z_tree.splice(index, 1);
}
$.cookie("z_tree" + window.location, JSON.stringify(z_tree))
} //添加
function add() {
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
if (nodes.length == 0) {
alert("请选中一个节点");
return;
}
$.iDialog({
title: '新增-栏目',
height: "400px",
width: "500px",
content: "url:/Admin/ChannelManage/Add?isSite=" + nodes[0].isSite + "&pId=" + nodes[0].id.replace("site", "")
});
} //修改
function edit() {
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
if (nodes.length == 0) {
alert("请选中一个节点");
return;
}
if (nodes[0].isSite) {
alert("根节点是站点,不能修改");
return;
}
$.iDialog({
title: '修改-栏目',
height: "500px",
width: "500px",
content: "url:/Admin/ChannelManage/Edit?id=" + nodes[0].id
});
} //删除
function del() {
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
if (nodes.length == 0) {
alert("请选中一个节点");
return;
}
if (nodes[0].isSite) {
alert("根节点是站点,站点不能删除");
return;
}
if (confirm("确定删除?")) {
$.ajax({
url: "/Admin/ChannelManage/Del",
type: "POST",
data: { id: nodes[0].id },
success: function (data) {
if (data == "OK") {
alert("删除成功");
treeObj.removeNode(nodes[0]);
$(".input-text").val("");
$(".table-data").find("select").val("");
} else {
alert("删除失败:" + data);
}
}
});
}
} //刷新
function refresh() {
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
var id = nodes[0].id;
loadTree(function () {
treeObj = $.fn.zTree.getZTreeObj("tree");
nodes = treeObj.getNodesByParam("id", id);
treeObj.selectNode(nodes[0]);
treeObj.setting.callback.onClick(null, treeObj.setting.treeId, nodes[0]);
});
}
</script>
<div id="easyui-layout" class="easyui-layout" style="height: 450px;">
<div data-options="region:'north',border:false" style="height: 35px;">
<div class="toolbar">
@if (ViewBag.addRights)
{
<a class="a-btn" href="javascript:void(0);" onclick="add()">
<img alt="" src="~/Content/images/add2.gif" />
添加栏目
</a>
}
@if (ViewBag.editRights)
{
<a class="a-btn" href="javascript:void(0);" onclick="edit()">
<img alt="" src="~/Content/images/edit.gif" />
修改栏目
</a>}
@if (ViewBag.delRights)
{
<a class="a-btn" href="javascript:void(0);" onclick="del()">
<img alt="" src="~/Content/images/del2.gif" />
删除
</a>
}
</div>
</div>
<div id="west" data-options="region:'west'" style="width: 30%; border-left: 0; border-bottom: 0;">
<div style="height: 100%; overflow: auto;">
<div id="tree" class="ztree" style="padding-left: 5px;">
</div>
</div>
</div>
<div id="center" data-options="region:'center'" style="border-left: 0; border-bottom: 0;">
<table class="table-data" cellpadding="0" cellspacing="0">
<tr>
<td class="td-title" style="width: 35%;">
<span>所属站点:</span>
</td>
<td>
<input id="site" type="text" class="input-text"
disabled="disabled" style="width: 60%;" />
</td>
</tr>
<tr>
<td class="td-title">
<span>栏目名称:</span>
</td>
<td>
<input id="title" type="text" class="input-text"
disabled="disabled" style="width: 60%;" />
</td>
</tr>
<tr>
<td class="td-title">
<span>父级栏目:</span>
</td>
<td>
<input id="parentChannel" type="text" class="input-text"
disabled="disabled" style="width: 60%;" />
</td>
</tr>
<tr>
<td class="td-title">
<span>栏目列表类型:</span>
</td>
<td>
<select class="select" id="listType" name="listType" disabled="disabled">
<option value=""></option>
<option value="1">文字列表</option>
<option value="2">图片列表</option>
<option value="3">单篇文章</option>
<option value="4">页面链接</option>
<option value="5">父级栏目</option>
</select>
</td>
</tr>
<tr>
<td class="td-title">
<span>栏目显示:</span>
</td>
<td>
<select class="select" id="displayPos" name="displayPos" disabled="disabled">
<option value=""></option>
<option value="1">顶部导航栏</option>
<option value="2">不显示</option>
</select>
</td>
</tr>
<tr>
<td class="td-title">
<span>排序:</span>
</td>
<td>
<input id="sort" type="text" class="input-text"
disabled="disabled" style="width: 40px;" />
</td>
</tr>
<tr>
<td class="td-title" style="border-bottom: solid 1px #ddd;">
<span>栏目图标:</span>
</td>
<td style="border-bottom: solid 1px #ddd;">
<img alt="" src="" id="iconUrl" style="height: 100px;" />
</td>
</tr>
</table>
</div>
</div>
<script type="text/javascript">
$("#easyui-layout").height($(window).height());
</script>
后台代码:
public ActionResult GetData()
{
List<cms_site_ext> siteListAll = m_SiteDal.GetListAll();
List<cms_channel_ext> channelListAll = m_ChannelDal.GetListAll();
List<Dictionary<string, object>> dicList = new List<Dictionary<string, object>>(); foreach (cms_site_ext site in siteListAll)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("id", "site" + site.id.ToString());
dic.Add("pId", null);
dic.Add("name", site.title);
dic.Add("open", "true");
dic.Add("isSite", true); //自定义属性
dicList.Add(dic);
} foreach (cms_channel_ext channel in channelListAll)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("id", channel.id.ToString());
dic.Add("pId", channel.parentId == - ? "site" + channel.siteId.ToString() : channel.parentId.ToString());
dic.Add("name", channel.title);
dic.Add("isSite", false); //自定义属性
dic.Add("channel", channel);
dic.Add("site", siteListAll.Find(a => a.id == channel.siteId));
dic.Add("parentChannel", channel.parentId == - ? null : channelListAll.Find(a => a.id == channel.parentId));
dicList.Add(dic);
} return Json(dicList);
}
zTree的使用2的更多相关文章
- ztreeDeptSelect 基于jquery和ztree的部门选择插件
插件介绍 首先我们来看插件的功能演示(效果): 插件准备好后.前台只需编写html: <input type="text" class="deptName" ...
- C#使用Jquery zTree实现树状结构显示_异步数据加载
JQuery-Ztree下载地址:https://github.com/zTree/zTree_v3 JQuery-Ztree数结构演示页面: http://www.treejs.cn/v3/dem ...
- 【笔记】ztree的使用
引用的js和css: <!-- zTreeJS --><script type="text/javascript" src="jquery/jquery ...
- zTree和SweetAlert插件初探
1.zTree插件简介 zTree是一个依靠 jQuery实现的多功能“树插件”.优异的性能.灵活的配置.多种功能的组合是zTree最大优点.专门适合项目开发,尤其是树状菜单.树状数据的Web显示.权 ...
- jQuery.zTree的跳坑记录
最近项目用到树型结构的交互,一开始并不打算选择zTree,为了项目进度我妥协了,这一妥协后果就是我进坑了,在2天的挣扎中,我终于跳出坑了,活了下来,有一些感慨纪录下来. 有一个业务场景需要2个树型结构 ...
- ztree + ashx +DataTable +Oracle
问题描述 好久没有使用ztree了,刚才在使用ztree做导航时遇到了几个小问题: 1.返回数据源是undefined . 2.数据出现后树结构没有出现(pIdKey单词拼写错误). 3.在使用Ora ...
- js树形控件—zTree使用总结
0 zTree简介 树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 0.0 ...
- zTree简单实现
用zTree简单实现从后台传数据生成树 1.在jsp上引入js,jsp的head完整的部分 <%@ page language="java" contentType=&quo ...
- ztree.js的使用整理
/** 配置:知识点管理 */ var setting = { view: { showIcon: false, addDiyDom: addPrevDom, addHoverDom: addHove ...
- zTree 循环树
/// <summary> /// 初始化第一次节点加载 /// </summary> /// protected string _menu = string.Empty; p ...
随机推荐
- Ehcache BigMemory: 摆脱GC困扰
问题 使用java开源项目经常需要调优jvm,以优化gc.对于gc,如果对象都是短时对象,那么jvm相对容易优化,假如碰上像solr使用自带java cache的项目,那么gc严重受限于cache,因 ...
- IOS上架流程
来个简易版本的.此版本针对用于初次上架的MAC以及在别的本上上架过,但是新换MAC但不换开发者帐号的MAC. 1:首先确认本机没有老旧的开发和distribution证书,有的话,删除: 2:在本机打 ...
- CSS控制样式的三种方式优先级对比验证
入职已经一个月了,自此后,就好久没有写过博客了,在此先跟关注我的博友们说声抱歉.今天,在公司的一个培训作业的驱动以及伟哥那句“再不写博客就开除你”的监督下,我终于重拾旧爱,再次登录博客园,继续与大家分 ...
- js模版引擎handlebars.js实用教程——如何引入Handlebars.js
返回目录 Jquery插件,第一步当然要引用Jquery啦,然后引用Handlebars.js即可,仅仅需要这两个js文件. <script type="text/javascript ...
- Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js
Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一 三个基本的特性:封装.继承与多态1 1.2. 魔 ...
- spring cvc-elt.1: Cannot find the declaration of element 'beans'解决办法
转载自http://blog.csdn.net/legendj/article/details/9950963 今天在写spring aop示例的时候,在spring.xml文件中添加spring a ...
- Linux常用命令02
显示当前目录 pwd (print working directory) 显示当前目录 创建目录 mkdir (make directory) 创建目录(注意不是创建文 ...
- Liferay7 BPM门户开发之46: 集成Activiti用户、用户组、成员关系同步
在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户.组的同步需求非常重要,用来实现签收组的概念,比如指定签收组.会签.抢签都需要用到. Activiti可以通过自 ...
- JVM快速学习
最近开始了全面的JAVA生态环境学习,因此,JVM的学习是必不可少的一个环节.和.NET的CLR一样,一起的JAVA应用均跑在JVM虚拟机上,不过相对我们只能干看看的CLR,JVM有很大的灵活性,可以 ...
- iOS越狱开发(一)
做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结.个人不推荐使用盗版,这里主要以技术介绍为主. 这个系列里面主要介绍怎样进行越狱开发,涉及到以下几个 ...