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 ...
随机推荐
- Silverlight无法启动调试,错误“Unable to start debugging. The Silverlight Developer Runtime is not installed. Please install a matching version.” 解决办法
今天调试Silverlight出现了以下错误: 意思是“无法启动调试,因为Silverlight Developer Runtime没有安装,请安装一个匹配的版本”.但是按Ctrl + F5可以调试运 ...
- [ACM_几何] Pipe
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28417#problem/B 本题大意: 给定一个管道上边界的拐点,管道宽为1,求 ...
- Maven项目环境搭建实例.
前言:最近下班比较早, 总是不愿意让自己闲着, 此时刚好从网上找到了一些项目的资源, 结合自己在公司做的项目, 所以拿来一起学习加复习一些平常用到和没接触过的新知识.做的这个项目的名称叫做babasp ...
- Atitit.软件中见算法 程序设计五大种类算法
Atitit.软件中见算法 程序设计五大种类算法 1. 算法的定义1 2. 算法的复杂度1 2.1. Algo cate2 3. 分治法2 4. 动态规划法2 5. 贪心算法3 6. 回溯法3 7. ...
- java的五种数据类型解析
不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...
- iOS开发备忘录:属性列表文件数据持久化
属性列表文件是一种XML文件,Foundation框架中的数组和字典等都可以于属性列表文件相互转换. NSArray类常用读写属性列表文件的方法: +arrayWithContentsOfFile:类 ...
- 每天一个linux命令(16):which命令
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. ...
- 手把手教你实现一个完整的 Promise
用过 Promise,但是总是有点似懂非懂的感觉,也看过很多文章,还是搞不懂 Promise的 实现原理,后面自己边看文章,边调试代码,终于慢慢的有感觉了,下面就按自己的理解来实现一个 Promise ...
- Java 线程 — ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor 该类继承自ThreadPoolExecutor,增加了定时执行线程和延迟启动的功能,这两个功能是通过延时队列DelayedWorkQueue辅助 ...
- 第五章 运输层(UDP和TCP三次握手,四次挥手分析)
序言 通过这章,可以知道其实三次握手和四次挥手其实真的好简单,通过这章的学习,我相信你也会同样的认为,以后在也不需要听到别人问三次握手的过程而自己一脸懵逼了,觉得人家好屌,其实也就是他懂你不懂,仅 ...