前台代码:

@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的更多相关文章

  1. ztreeDeptSelect 基于jquery和ztree的部门选择插件

    插件介绍 首先我们来看插件的功能演示(效果): 插件准备好后.前台只需编写html: <input type="text" class="deptName" ...

  2. C#使用Jquery zTree实现树状结构显示_异步数据加载

    JQuery-Ztree下载地址:https://github.com/zTree/zTree_v3 JQuery-Ztree数结构演示页面:  http://www.treejs.cn/v3/dem ...

  3. 【笔记】ztree的使用

    引用的js和css: <!-- zTreeJS --><script type="text/javascript" src="jquery/jquery ...

  4. zTree和SweetAlert插件初探

    1.zTree插件简介 zTree是一个依靠 jQuery实现的多功能“树插件”.优异的性能.灵活的配置.多种功能的组合是zTree最大优点.专门适合项目开发,尤其是树状菜单.树状数据的Web显示.权 ...

  5. jQuery.zTree的跳坑记录

    最近项目用到树型结构的交互,一开始并不打算选择zTree,为了项目进度我妥协了,这一妥协后果就是我进坑了,在2天的挣扎中,我终于跳出坑了,活了下来,有一些感慨纪录下来. 有一个业务场景需要2个树型结构 ...

  6. ztree + ashx +DataTable +Oracle

    问题描述 好久没有使用ztree了,刚才在使用ztree做导航时遇到了几个小问题: 1.返回数据源是undefined . 2.数据出现后树结构没有出现(pIdKey单词拼写错误). 3.在使用Ora ...

  7. js树形控件—zTree使用总结

    0 zTree简介 树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 0.0 ...

  8. zTree简单实现

    用zTree简单实现从后台传数据生成树 1.在jsp上引入js,jsp的head完整的部分 <%@ page language="java" contentType=&quo ...

  9. ztree.js的使用整理

    /** 配置:知识点管理 */ var setting = { view: { showIcon: false, addDiyDom: addPrevDom, addHoverDom: addHove ...

  10. zTree 循环树

    /// <summary> /// 初始化第一次节点加载 /// </summary> /// protected string _menu = string.Empty; p ...

随机推荐

  1. Android和Linux应用综合对比分析

    原文地址:http://www.cnblogs.com/beer/p/3325242.html 免责声明: 当时写完这篇调查报告,给同事看了后,他觉得蛮喜欢,然后想把这篇文章修改一下,然后往期刊上发表 ...

  2. web前端职业规划(转)

    关于一个WEB前端的职业规划,其实是有各种的答案,没有哪种答案是完全正确的,全凭自己的选择,只要是自己选定了, 坚持去认真走,就好.在这里,我只是简要说一下自己对于这块儿内容的理解.有一个观点想要分享 ...

  3. [翻译].NET随机数

    原文链接:http://csharpindepth.com/Articles/Chapter12/Random.aspx   随机数 当你在Stack Overflow上看到看到某个问题标题当中有“随 ...

  4. Unity3D使用经验总结 优点篇

    09年还在和其它小伙伴开发引擎的时候,Unity3D就初露头角. 当时就对这种基于组件式的设计结构很不理解. 觉得拆分过于细致,同时影响效率. 而时至今日,UNITY3D已经成为了众多团队的首选3D引 ...

  5. 《30天自制操作系统》笔记(06)——CPU的32位模式

    <30天自制操作系统>笔记(06)——CPU的32位模式 进度回顾 上一篇中实现了启用鼠标.键盘的功能.屏幕上会显示出用户按键.点击鼠标的情况.这是通过设置硬件的中断函数实现的,可以说硬件 ...

  6. 网络误区:不用中间变量交换2个变量的value,最高效的是异或运算.

    本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器 ...

  7. Enterprise Architect的共享Respository设置,postgresql数据库

    Enterprise Architect有一个很实用的共享,在设计UML图的时候,可以连接到一个数据库服务器,将所有的画图数据共享在上面,所有连到这个server的人,都可以看到 别人的图,图中的元素 ...

  8. bower使用记录

    每次做项目的时候都不依赖某一个库来开发,每次需要某一个库的时候都是百度进入库官网再找到下载的库,经常会因为官网的改版更新而在里面绕半天找不到想要的版本号,当然直接去github,CDN 都可以找到需要 ...

  9. Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)

    Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编   ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...

  10. fir.im Weekly - 聊聊让人向往的远程开发工作

    6月30 日,苹果开发者后台贴出一封关于广电总局的醒目通知,申报一个游戏 APP 上架AppStore,你需要文网文+ICP证+软著+版号,审批难度将越来越大,不禁让人感慨中国独立开发者的成长 &qu ...