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 ...
随机推荐
- Javascrpt无刷新文件上传
最近工作中遇到上传文件问题,主要需求是一步点击上传,兼容ie8+,当时用的dojox/form/uploader控件,这两天扒了一下源码,明白了原理拿出来分享一下. 总体思路如下: 1.对于支持XML ...
- Angular Input格式化
今天在Angular中文群有位同学问到:如何实现对input box的格式化.如下的方式对吗? <input type="text" ng-model="demo. ...
- 《30天自制操作系统》笔记(03)——使用Vmware
<30天自制操作系统>笔记(03)——使用Vmware 进度回顾 在上一篇,实现了用IPL加载OS程序到内存,然后JMP到OS程序这一功能:并且总结出下一步的OS开发结构.但是遇到了真机测 ...
- C语言再学习之内存对齐
昨天看Q3的代码,看到有个_INTSAIZEOF的宏,着实晕了一阵.一番google后,终于明白,这个宏的作用是求出变量占用内存空间的大小,先看看_INTSAIZEOF的定义吧: #define _I ...
- 阿里巴巴B2B搜索学习
1.搜索业务 主搜索:商品搜索.商家搜索.采购搜索.app搜索 行业搜索:淘货源.淘工厂.聚好货.主题市场.品牌馆等 2.优势 由于用户多,需求强烈,收益大,所以功能.场景.架构做到极致高效. 代码复 ...
- java内存管理总结
编译好的java程序需要运行在jvm中. 程序,无论是代码还是数据,都需要存储在内存中.JVM为java提供并管理所需要的内存空间. JVM内存分为堆.栈.方法区. 对象存储在堆中. This liv ...
- Atitit 图像处理底色变红的解决
Atitit 图像处理底色变红的解决 1.1. 原因 ImageIO bug ,alpha通道应该在保存jpg的时候排除1 1.2. 解决,自己移除alpha通道即可1 2. Image sav ...
- hammer.js手势库使用
hammer.js是一款移动端手势库组件,支持pan(拖动).swipe(滑动).tap(轻触).press(按压,即长按).doubletap(双击)等很多手势操作,提供比较完善的事件监听机制,但是 ...
- fir.im Weekly - 人人都需要的 IT 技能图谱
AlphaGo 与李世石的人机世纪大战落下帷幕,不禁让人思考<失控> 中说道的 "机器正在生物化,而生物正在工程化 ".作为人类,在未来能否保全最后的智力骄傲成为一个疑 ...
- salesforce 零基础学习(三十六)通过Process Builder以及Apex代码实现锁定记录( Lock Record)
上一篇内容是通过Process Builder和Approval Processes实现锁定记录的功能,有的时候,往往锁定一条记录需要很多的限制条件,如果通过Approval Processes的条件 ...