前台代码:

@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. FusionCharts简单教程(五)-----FusionCharts中的那些特殊符号

           在FusionCharts中有些特殊字符,我们需要进行编码操作才能够使用,否则就无法正常显示. 欧元符号       在FusionCharts里显示"€",你需要用 ...

  2. [ZigBee] 6、ZigBee基础实验——定时器3和定时器4(8 位定时器)

    上一节讲了16位定时器1,本节讲8位定时器3和定时器4! 1.综述 Timer 3 and Timer 4 are two 8-bit timers(8位定时器). Each timer has tw ...

  3. Lock,LockFree,MemoryBarrier,ConcurrentCollection

    最近看并行编程书本的一些心得,简单记录下多线程和并行编程必知必会的几个概念,再次加深自己的理解. .NET Framework4提供了一个新的命名空间System.Collections.Concur ...

  4. 奇怪的BUG

    熟语说“常在河边走,哪能不湿鞋”,在现实中我想说:“代码写多了,总会遇到奇怪的bug”,遇到bug不可怕,可怕的是不自己不知道这么解决,有些bug能当时解决,有些在自己知识水平提高后知道如何解决.还有 ...

  5. Redis学习笔记~Redis并发锁机制

    回到目录 redis客户端驱动有很多,如ServiceStack.Redis,StackExchange.Redis等等,下面我使用ServiceStack.Redis为例,介绍一下在redis驱动中 ...

  6. Redis学习笔记~关于空间换时间的查询案例

    回到目录 空间与时间 空间换时间是在数据库中经常出现的术语,简单说就是把查询需要的条件进行索引的存储,然后查询时为O(1)的时间复杂度来快速获取数据,从而达到了使用空间存储来换快速的时间响应!对于re ...

  7. Java程序员的日常—— POI与JDBC、Mockmvc与单元测试

    周日没怎么休息好,周一一天都迷迷糊糊的,不过还算是干了不少的活. 总结一下,大致有以下几点内容: 1 使用poi以及mysql jdbc实现了一个复杂excel的导入 2 基于工程原有的代码,书写sp ...

  8. 前端那点事儿——Tocify自动生成文档目录

    今天偶然间看到文档服务器有一个动态目录功能,点击目录能跳转到指定的位置:窗口滑动也能自动更新目录的焦点. 效果 框架 原来使用的是一个开源的jquery-ui控件——tocify.js,它可以遍历页面 ...

  9. AngularJS 源码分析1

    AngularJS简介 angularjs 是google出品的一款MVVM前端框架,包含一个精简的类jquery库,创新的开发了以指令的方式来组件化前端开发,可以去它的官网看看,请戳这里 再贴上一个 ...

  10. 开源IM工程“蘑菇街TeamTalk”的现状:一场有始无终的开源秀

    1.前言 随着云IM的发展,已吸引越来越多有IM需求的APP接入.但考虑到云IM无论从商业模式还是运营模式上,还需经过多年的沉淀,才可能真正实现客户与服务商的运营和服务良性循环的双赢局面.在此之前,加 ...