zTree的运用

之前做了一个分类,是一个不限级别的,就用树的方式展示出来的

首先添加引用

<script src="~/Scripts/jquery.ztree.core-3.5.js"></script>
<script src="~/Scripts/jquery.ztree.exedit-3.5.js"></script>

下面就写写他的实现,首先

html

 <td style="width: 500px;" valign="top"><ul id="treeDemo" class="ztree"></ul></td>

js代码

首先在页面加载的时候

  $(document).ready(function () {
            /// <summary>绑定一级分类</summary>
            var treeNodes = eval(‘@Html.Raw(ViewData["zTree"])‘);
            $.fn.zTree.init($("#treeDemo"), setting, treeNodes);
        });

定义zTree

  //Tree
        var setting = {
            edit: {
                enable: true,
                showRemoveBtn: setRemoveBtn,
                removeTitle: "删除",
                showRenameBtn: false
            },
            async: {
                enable: true,
                url: "/InfoSection/GetChild",
                autoParam: ["id"],
                otherParam: [],
                dataFilter: null
            },
            data: {
                simpleData: {
                    enable: true
                }
            },
            callback: {
                beforeClick: null,
                onClick: function(event, treeId, treeNode) { //节点的点击事件
                    var id = treeNode.id;
                    var tid = treeNode.tId;
                    $("#Id").val(id);
                    $("#hidTid").val(tid);
                    $("#typeName").html("当前分类");
                    $("#divAdd").show();
                    $("#divArea").show();
                    if (id > 0) {
                        $("#tdInfo").hide();
                        $("#hidType").val("2"); //修改
                        var objLoad = $("#tdRefresh");
                        objLoad.html("<img src=‘/Content/Images/loading4.gif‘ id=‘childclassloadimgimg‘ />");
                        $.ajax({
                            url: "GetDetail?id=" + id,
                            dataType: "json",
                            cache: false,
                            data: null, //提交整个表单
                            type: "POST",
                            success: function (data) {

                                $("#childclassloadimgimg").remove();
                                $("#tdInfo").show();
                                // console.dir(data);
                                if (data.Id > 0) {
                                    $("#parent").html("");
                                    $.each(data.pid, function(i, n) {
                                        $("#parent").append("<option value=‘" + n.Value + "‘ >" + n.Text + "</option>");
                                    });
                                    $("#title").val(data.title);
                                    $("#imageUrl").val(data.imageUrl);
                                    $("#introduction").val(data.introduction);
                                    $("#content").val(data.content);
                                    $("#currentType").html(data.title);
                                    $("#hidIsCountry").val(data.IsCountry);
                                    $("#infoSectionId").val(data.infoSectionId);
                                    $("#spanChild").empty();
                                    $("#Section").show();
                                }
                            },
                            error: function() {
                                alert("网络异常!");
                            }
                        });
                    } else {
                        $("#currentType").html("一级分类");
                        $("#title").val("");
                        $("#imageUrl").val("");
                        $("#introduction").val("");
                        $("#content").val("");
                    }
                },
                beforeRemove: zTreeBeforeRemove,
                onRemove: zTreeOnRemove
            }, keep: { parent: true }
        };

        function zTreeOnRemove(event, treeId, treeNode) {
            //  alert(treeNode.id + ", " + treeNode.name);

        };
     //删除树的节点
        function zTreeBeforeRemove(treeId, treeNode) {
            //Ajax删除数据
            $.ajax({
                url: "Del?key=" + treeNode.id,
                dataType: "json",
                cache: false,
                data: null,
                type: "POST",
                success: function(data) {
                    if (data.Status == 0) {
                        alert("[提示]" + data.ErrMsg);
                        return false;
                    } else {
                        // window.location.href = "/Geographic/Index";
                        return true;
                    }
                },
                error: function() {
                    alert("删除失败!");
                    return false;
                }
            });
        };

        function setRemoveBtn(treeId, treeNode) {
            //判断为顶级节点则不显示删除按钮
            // alert(treeNode.id);
            if (treeNode.id == 0)
                return false;
            else
                return true;
        }

        function setEdit() {
            var zTree = $.fn.zTree.getZTreeObj("treeDemo");
            zTree.setting.edit.showRemoveBtn = true;
            zTree.setting.edit.showRenameBtn = false;
            zTree.setting.edit.removeTitle = "删除";

        }

        var log, className = "dark";

        function beforeClick(treeId, treeNode, clickFlag) {
            className = (className === "dark" ? "" : "dark");
            //showLog("[ " + getTime() + " beforeClick ]&nbsp;&nbsp;" + treeNode.name);
            return (treeNode.click != false);
        }

        function showLog(str) {
            if (!log) log = $("#log");
            log.append("<li class=‘" + className + "‘>" + str + "</li>");
            if (log.children("li").length > 8) {
                log.get(0).removeChild(log.children("li")[0]);
            }
        }

        function getTime() {
            var now = new Date(),
                h = now.getHours(),
                m = now.getMinutes(),
                s = now.getSeconds();
            return (h + ":" + m + ":" + s);
        }

        function filter(treeId, parentNode, childNodes) {
            if (!childNodes) return null;
            for (var i = 0, l = childNodes.length; i < l; i++) {
                childNodes[i].name = childNodes[i].name.replace(/\.n/g, ‘.‘);
            }
            return childNodes;
        }

Controller控制器代码

 #region 对树的操作
        /// <summary>
        /// 转化为树的Simple格式
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private Hashtable FormtSimpData(InfoSection model)
        {
            var hashResult = new Hashtable();
            hashResult["name"] = model.Title;
            hashResult["id"] = model.Id;
            hashResult["pId"] = 0;
            hashResult["isParent"] = "true";

            return hashResult;
        }

        /// <summary>
        /// 得到左边树结构下级分类
        /// </summary>
        /// <returns></returns>
        [AuthorizationCodeAttribute]
        [Description("查询分类目录")]
        [HttpPost]
        public ActionResult GetChild()
        {
            string strId = Request.Params["id"];
            List<Hashtable> hashSectionList = new List<Hashtable>();
            int id = 0;
            int.TryParse(strId, out id);
            if (id > 0)
            {
                InfoSectionOperator dal = new InfoSectionOperator();
                IList<InfoSection> ilList = dal.GetList(string.Format("ParentId={0}", id));
                if (ilList.Count > 0)
                {
                    hashSectionList.AddRange(ilList.Select(FormtSimpData));
                }
            }
            return Json(hashSectionList, JsonRequestBehavior.AllowGet);
        }

        #region 文章栏目的删除
        [AuthorizationCodeAttribute]
        [Description("删除树的节点")]
        public ActionResult Del(int? key)
        {
            var dal = new InfoSectionOperator();
            string ids = GetChildIds(key ?? 0);
            dal.Delete(string.Format("Id in ({0})", ids));
            return Json(new JsonMsg()
            {
                Status = 1,
                ErrMsg = "删除成功!"
            });
        }

        #endregion

取树的一级节点数据

 public ActionResult Add()
        {

            #region 显示一级节点

            IList<InfoSection> list = dal.GetList(string.Format("ParentId=0"));
            list.Insert(0, new InfoSection()
            {
                Id = 0,
                Title = "根目录"
            });
            List<Hashtable> hashInfoSection = list.Select(FormtSimpData).ToList();
            string strResult = JsonConvert.SerializeObject(hashInfoSection);
            ViewData["zTree"] = strResult;
            #endregion
            #endregion

            return View();
        }
        #endregion

zTree的运用

时间: 2024-12-06 23:08:03

zTree的运用的相关文章

如何将zTree选中节点传递给后台

获取zTree选中节点 1 <body> 2 3 <script type="text/javascript"> 4 var setting = { 5 view: { 6 dblClickExpand: false, 7 showLine: true, 8 }, 9 check: { 10 enable: true, //必选项 11 chkboxType: { "Y": "p", "N": &quo

ztree复选框,过滤节点的机制

//过滤节点的机制 直接return node表示不做任何过滤 //return node.checked==true;表达选择框的节点 function filter(node) {return node;} ///动态设置zTree的所有节点有checkboxfunction DynamicUpdateNodeCheck() { var zTree = $.fn.zTree.getZTreeObj("treeDemo"); //根据过滤机制获得zTree的所有节点         

zTree更新自定义标签&gt;&gt;&gt;

zTree>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> x 本来想自己敲一个zTree的例子的>>> 但是一想zTree文档做的这么好,直接拷贝过来一个得了... 哈哈>>> <!DOCTYPE html> <html> <head> <

结构-行为-样式 - Angularjs 环境下Ztree结合JqueryUI实现拖拽

新的项目中有一个需求是要求客户标签可以自定义,于是就想到了客户体验,让客户自己拖拽标签进行组合查询.但是理想很丰满,现实很骨感.一开始就遇到了问题,各个插件之间的结合问题,折腾一翻之后终于实现了这个功能,这里记录一下. 首先,在Angularjs+AMD+RequireJs的环境下引入插件: require.config({ baseUrl: "", urlArgs: 'ver=' + (+new Date()), waitSeconds: 0, paths: { 'jqueryUI'

zTree的内核

zTree的内核:   *  结构       (function($){           //常量部分           //申明常量是因为这些数据是不能改变的,如果成了对象的属性,很容易就改变了           var ZTREE_NODECREATED = "ZTREE_NODECREATED";           var ZTREE_CLICK = "ZTREE_CLICK";           var ZTREE_RIGHTCLICK = &

zTree

js树形控件—zTree使用总结 0 zTree简介 树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 0.0 zTree的特点 最新版的zTree将核心代码按照功能进行了分割,不需要的代码可以不用加载,如普通使用只需要加载核心的jquery.ztree.core-3.5.js,需要使用勾选功能加载jquery.ztree.excheck-3.5.min.js,需要使用编辑功

JQuery 常用积累(六)ZTree

Web 项目或多或少都会有涉及到什么人员职称树,菜单树,组织机构树...... 历手三四个项目有大有小,采用的树前端都是 Ztree. 有些优秀的J2EE 框架将这些常用的组件都封装起来,作为模块化的组件提供给前端,这样固然是好,开发效率会提升几倍. 客户需求是什么,组件化往上一套,几分钟就能搭建起来. 但这样咱程序员真的就是搬砖的了,纯纯的重复性工作. 1. Ztree 主要的特点 ZTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻

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

插件介绍 首先我们来看插件的功能演示(效果): 插件准备好后.前台只需编写html: <input type="text" class="deptName" /> 然后在javascript中渲染插件(代码使用jQuery写法): $(".deptName").ztreeDeptSelect(); 插件即渲染完成. 此插件已发布至github,源码地址: https://github.com/harveyhang/ztreeDeptS

JQuery ztree 异步加载实践

本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说这篇博客还算规整! 准备工作 1 JQuery ZTree,下载地址 复制其中的JS和CSS即可,其实没必要引那么多,用什么引什么就可以. 2 需要fastJSON,用来转换JSON对象,下载地址 我下载JAR包后,引入到Eclipse中总是报找不到class错误. 解决办法:把jar包放在WEB-

【ztree】完美实现复选框功能

在权限系统中,大多数的页面都用到了树形结构,其中最常用的便是树资源的加载和单击事件,除此之外ztree还可以实现很多功能.今天以实现复选框的添加功能为例,咱们再来深入的学习下ztree的应用. 一.实例描述 在用户管理模块中,需要给用户添加角色,而用户与角色的之间是一个多对多的关系.这里我们可以先加载两个角色树资源,通过两个树之间数据的交换,从而得到用户所拥有的角色资源,实现效果如下: 1.用户信息入口 2.加载角色信息 Datagrid表格中的"分配"按钮是针对单个用户的角色分配,而