ztree树应用

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ZtreeListView.ascx.cs" Inherits="SplendidCRM.Administration.CompanyOrganization.ZtreeListView" %>
<link href="ztree/demo.css" rel="stylesheet" type="text/css" />
<link href="ztree/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" />
<script src="ztree/jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="ztree/jquery.ztree.core-3.5.js" type="text/javascript"></script>
<script src="ztree/jquery.ztree.excheck-3.5.js" type="text/javascript"></script>
<script src="ztree/jquery.ztree.exedit.js" type="text/javascript"></script>

<script type="text/javascript">
var setting = {
async: {
enable: true,
url: "ztreehandler.ashx",
autoParam: ["id", "name=n", "level=lv"],
otherParam: { "otherParam": "zTreeAsyncTest" },
dataFilter: filter
},
view: { expandSpeed: "",
addHoverDom: addHoverDom,
removeHoverDom: removeHoverDom,
selectedMulti: false
},
edit: {
enable: true
},
data: {
simpleData: {
enable: true
}
},
callback: {
beforeRemove: beforeRemove,
beforeRename: beforeRename
}
};

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;
}
function beforeRemove(treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.selectNode(treeNode);
if (confirm("Confirm delete node ‘" + treeNode.name + "‘ it?")) {
$.ajax({
type: "POST",
cache: false,
async: false,
url: "ztreehandler.ashx",
data: "id=" + treeNode.id,
success: function (result) {

}
});
}
else {
return false;
}
}
function beforeRename(treeId, treeNode, newName) {
if (newName.length == 0) {
alert("Node name can not be empty.");
return false;
}

$.ajax({
type: "POST",
cache: false,
async: false,
url: "ztreehandler.ashx",
data: "id=" + treeNode.id + "&lv=" + newName + "",
success: function (result) {

}
});

return true;
}

var newCount = 1;
function addHoverDom(treeId, treeNode) {
var sObj = $("#" + treeNode.tId + "_span");
if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0) return;
var addStr = "<span class=‘button add‘ id=‘addBtn_" + treeNode.tId
+ "‘ title=‘add node‘ onfocus=‘this.blur();‘></span>";
sObj.after(addStr);
var btn = $("#addBtn_" + treeNode.tId);
if (btn) btn.bind("click", function () {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
var newid = newGuid();
var treeName = "newNode " + (addCount++);
var level = parseInt(treeNode.level) + 2;
var parentid = treeNode.id;

var newNode = { id: newid, pId: parentid, name: treeName };
zTree.addNodes(treeNode, newNode);

var childNodes = zTree.transformToArray(treeNode);
var nodes;
for (i = 0; i < childNodes.length; i++) {
if (i == childNodes.length - 1) {
nodes = childNodes[i].tId;
}
}

$("#" + nodes + "_a").click();
$("#" + nodes + "_edit").click();

$.ajax({
type: "POST",
cache: false,
async: false,
url: "ztreehandler.ashx",
data: "id=" + newid + "&lv=" + treeName + "&n=" + level + "&fid=" + parentid + "",
success: function (result) {

}
});

return false;
});
};
function removeHoverDom(treeId, treeNode) {
$("#addBtn_" + treeNode.tId).unbind().remove();
};

var addCount = 1;
function addTreeNode() {
var treeName="newNode " + (addCount++);
var newid=newGuid();
var newNode = { id:newid,name: treeName };
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.addNodes(null, newNode);

//获取根节点的集合
var node = zTree.getNodesByFilter(function (node) { return node.level == 0 })
var nodes;
for (i = 0; i < node.length; i++) {
if (i == node.length - 1) {
nodes = node[i].tId;
}
}
$("#" + nodes + "_a").click();
$("#" + nodes + "_edit").click();

$.ajax({
type: "POST",
cache: false,
async: false,
url: "ztreehandler.ashx",
data: "id=" + newid + "&lv=" + treeName + "&n=1",
success: function (result) {

}
});
}

function refreshTreeNode() {
$.fn.zTree.init($("#treeDemo"), setting);
}

function newGuid() {
var guid = "";
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += "-";
}
return guid;
}

$(document).ready(function () {
$.fn.zTree.init($("#treeDemo"), setting);
});
</script>
<style type="text/css">
.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position:-144px 0; vertical-align:top; *vertical-align:middle}
</style>

<input type="button" value="Add" id="Add" onclick="addTreeNode();"/>
<input type="button" value="Refresh" id="Refresh" onclick="refreshTreeNode();"/>
<div class="content_wrap">
<div class="zTreeDemoBackground left">
<ul id="treeDemo" class="ztree"></ul>
</div>
<div class="right">

</div>
</div>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using Newtonsoft.Json;
using System.Diagnostics;
using SplendidCRM.TGSAP;

namespace SplendidCRM.Administration.CompanyOrganization
{
    /// <summary>
    /// Summary description for ztreehandler
    /// </summary>
    public class ztreehandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            string pId = context.Request["id"] ?? "";
            string pName = context.Request["lv"] ?? "";
            string pLevel = context.Request["n"] ?? "";
            string pCheck = context.Request["chk"] ?? "";
            string fId = context.Request["fid"] ?? "";

            StringBuilder sb = new StringBuilder();
            if (pName != "")
            {
                Guid pID = Guid.Empty;
                Guid gID = Guid.Empty;

                DbProviderFactory dbf = DbProviderFactories.GetFactory();
                using (IDbConnection con = dbf.CreateConnection())
                {
                    con.Open();
                    using (IDbTransaction trn = con.BeginTransaction())
                    {
                        try
                        {
                            if (pId != "")
                            {
                                if (fId != "")
                                {
                                    gID = Guid.Parse(fId);
                                }

                                pID = Guid.Parse(pId);

                                if (pLevel != "")
                                {
                                    if (pLevel == "1")
                                    {
                                        APSqlProcs.spCOMPANYORGANIZATION_Update(ref pID, pName, Guid.Empty, "1", trn);
                                    }
                                    else
                                    {
                                        APSqlProcs.spCOMPANYORGANIZATION_Update(ref pID, pName, gID, pLevel, trn);
                                    }
                                }
                                else
                                {
                                    APSqlProcs.spCOMPANYORGANIZATION_Update(ref pID, pName, Guid.Empty, "", trn);
                                }
                            }
                            trn.Commit();
                        }
                        catch (Exception ex)
                        {
                            trn.Rollback();
                            SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                            return;
                        }
                    }
                }

            }
            else
            {
                if (pId != "")
                {
                    APSqlProcs.spCOMPANYORGANIZATION_Delete(Guid.Parse(pId));
                }
                else
                {
                    bingTree(sb);
                }
            }
            context.Response.Write(sb.ToString());
        }

        public void bingTree(StringBuilder sb)
        {
            DbProviderFactory dbf = DbProviderFactories.GetFactory();
            using (IDbConnection con = dbf.CreateConnection())
            {
                string sSQL;
                sSQL = "select *               " + ControlChars.CrLf
                     + "  from COMPANYORGANIZATION" + ControlChars.CrLf
                     + " where 1 = 1 AND DELETED=0 ORDER BY DATE_ENTERED ASC" + ControlChars.CrLf;
                using (IDbCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText = sSQL;
                    using (DbDataAdapter da = dbf.CreateDataAdapter())
                    {
                        ((IDbDataAdapter)da).SelectCommand = cmd;
                        using (DataTable dt = new DataTable())
                        {
                            da.Fill(dt);
                            if (dt.Rows.Count > 0)
                            {
                                sb.Append(getList(dt));
                            }
                        }
                    }
                }
            }
        }

        /// <summary>
        /// 把数据形式转换成zTree的json数据格式
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public string getList(DataTable table)
        {
            try
            {
                List<object> lsNode = new List<object>();
                bool isParent = true;
                foreach (DataRow row in table.Rows)
                {
                    var ParentId = string.IsNullOrEmpty(row["PARENTID"].ToString()) ? 0 : row["PARENTID"];
                    if (isParentTrue(Guid.Parse(row["ID"].ToString())))
                        isParent = true;
                    else
                        isParent = false;
                    var zTreeData = new
                    {
                        id = row["ID"],
                        pId = ParentId,
                        name = row["NAME"],
                        isParent = isParent
                    };
                    lsNode.Add(zTreeData);
                }
                return JsonConvert.SerializeObject(lsNode);
            }
            catch (Exception)
            {

                throw;
            }
        }

        /// <summary>
        /// 判断当前节点是否还有子节点
        /// </summary>
        /// <param name="ParentId">父节点Id</param>
        /// <returns>bool类型</returns>
        public bool isParentTrue(Guid ParentId)
        {
            try
            {
                DbProviderFactory dbf = DbProviderFactories.GetFactory();
                using (IDbConnection con = dbf.CreateConnection())
                {
                    string sSQL;
                    sSQL = "select *               " + ControlChars.CrLf
                         + "  from COMPANYORGANIZATION" + ControlChars.CrLf
                         + " where PARENTID=‘" + ParentId.ToString() + "‘ AND DELETED=0";
                    using (IDbCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = sSQL;
                        using (DbDataAdapter da = dbf.CreateDataAdapter())
                        {
                            ((IDbDataAdapter)da).SelectCommand = cmd;
                            using (DataTable dt = new DataTable())
                            {
                                da.Fill(dt);
                                return dt.Rows.Count >= 1 ? true : false;
                            }
                        }
                    }
                }

            }
            catch (Exception)
            {

                throw;
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N‘[dbo].[COMPANYORGANIZATION]‘) AND type IN (N‘U‘))
DROP TABLE [dbo].[COMPANYORGANIZATION]
GO

CREATE TABLE COMPANYORGANIZATION
(
    ID UNIQUEIDENTIFIER PRIMARY KEY,
    DELETED BIT DEFAULT(0) NOT NULL,
    CREATED_BY UNIQUEIDENTIFIER NULL,
    DATE_ENTERED DATETIME DEFAULT(GETDATE()) NOT NULL,
    MODIFIED_USER_ID UNIQUEIDENTIFIER NULL,
    DATE_MODIFIED DATETIME DEFAULT(GETDATE()) NOT NULL,
    NAME NVARCHAR(500) NULL,
    PARENTID UNIQUEIDENTIFIER NULL,
    LEVEL NVARCHAR(200) NULL
)
if exists (select * from sysobjects where id = object_id(‘dbo.spCOMPANYORGANIZATION_Update‘) AND OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)
    Drop Procedure [dbo].[spCOMPANYORGANIZATION_Update];
GO

Create Procedure [dbo].[spCOMPANYORGANIZATION_Update]
(
    @ID uniqueidentifier output,
    @MODIFIED_USER_ID uniqueidentifier = NULL,
    @NAME nvarchar(500) = NULL,
    @PARENTID uniqueidentifier = NULL,
    @LEVEL nvarchar(200) = NULL
)
AS

    if not exists(select * from COMPANYORGANIZATION where ID = @ID) begin -- then
        IF @LEVEL<>‘‘ AND @LEVEL IS NOT NULL
        BEGIN
            insert
            into [COMPANYORGANIZATION]
            (
                [ID],
                [CREATED_BY],
                [MODIFIED_USER_ID],
                [NAME],
                [PARENTID],
                [LEVEL]
            )
            values
            (
                @ID,
                @MODIFIED_USER_ID,
                @MODIFIED_USER_ID,
                @NAME,
                @PARENTID,
                @LEVEL
            )
        END
        ELSE
        BEGIN
            if dbo.fnIsEmptyGuid(@ID) = 1 begin -- then
                set @ID = newid();
            end -- if;

            insert
            into [COMPANYORGANIZATION]
            (
                [ID],
                [CREATED_BY],
                [MODIFIED_USER_ID],
                [NAME],
                [PARENTID],
                [LEVEL]
            )
            values
            (
                @ID,
                @MODIFIED_USER_ID,
                @MODIFIED_USER_ID,
                @NAME,
                @PARENTID,
                @LEVEL
            )
        END
    end else BEGIN
        update [COMPANYORGANIZATION]
            set
                [MODIFIED_USER_ID] = @MODIFIED_USER_ID,
                [DATE_MODIFIED] = getdate(),
                [NAME] = @NAME
        where
            [ID] = @ID
    end -- if;

GO

Grant Execute on dbo.spCOMPANYORGANIZATION_Update to public;
GO
----------------------------------------------------------------------------------------------------

if exists (select * from sysobjects where id = object_id(‘dbo.spCOMPANYORGANIZATION_Delete‘) AND OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)
    Drop Procedure [dbo].[spCOMPANYORGANIZATION_Delete];
GO

Create Procedure [dbo].[spCOMPANYORGANIZATION_Delete]
    ( @ID               uniqueidentifier
    , @MODIFIED_USER_ID uniqueidentifier
    )
as
  begin
    set nocount on

        update [COMPANYORGANIZATION]
           set DELETED          = 1
             , DATE_MODIFIED    = getdate()
             , MODIFIED_USER_ID = @MODIFIED_USER_ID
         where ID               = @ID
           and DELETED          = 0;
  end
GO

Grant Execute on dbo.spCOMPANYORGANIZATION_Delete to public;
GO
----------------------------------------------------------------------------------------------------
时间: 2025-01-05 19:41:02

ztree树应用的相关文章

通用权限管理系统之权限菜单zTree树的展示及移动的处理方法

在通用权限管理系统中,有很多数据结构是有父子关系的,如组织机构,部门,权限菜单等,在展示的时候,大多数是通过zTree树的形式展现的,如下: 权限菜单展示 这种数据后台输出比较容易处理,参考如下获取某个子系统的全部操作菜单: 后台输出zTree树的数据 /// <summary> /// 获取module树结构数据 /// </summary> /// <param name="systemCode"></param> /// <r

从零认识ztree树插件

首先说绑定数据,怎么样绑定到树状菜单下.先贴代码: 1.第一步,先引入js脚本文件,还有一个css文件,还要引用一个jQuery的脚本文件 2.第二步,创建一个ul的标签,给它设置一个Id,并且给它一个class="ztree",这是必须的,与样式保持一致 3.第三步,$.fn.zTree.init($("#treeDemo"), setting, eval("(" + data + ")"));,这是一段初始化必须加载的.e

JavaScript之jQuery-8 jQuery 使用插件(zTree树插件、jQuery UI插件)

一.jQuery zTree树控件 zTree介绍 - zTree 是利用jQuery的核心代码,实现一套能完成常用功能的Tree插件 - 兼容IE.FireFox.Chrome 等主流浏览器 - 支持 JSON 数据 - 支持一次性静态生成和Ajax异步加载两种方式 - 支持tree的节点移动.编辑.删除 zTree使用步骤 - step 1: 下载zTree相关文件(js.css) - 下载地址: http://www.ztree.me/ - step 2: 引入相关文件 - css: 样式

ztree树 叶子节点路径的集合

1.Question Description: ztree树各个节点都带有路径,如“/根节点”,"/根节点/一级节点",“根节点/一级节点/二级节点‘; 现在想获取所选的最末级节点数据集合. 2.Solution: $("#btn_saveAssetInfo").click(function(){ var treeObj = $.fn.zTree.getZTreeObj("toggle"); var nodes = treeObj.getChec

转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果

是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题所以没有动手处理.今天闲来无事琢磨了一下这个需求.我的解决思路如下所示: 1.监听文本框的onkeyup事件:实时传递其值到某个函数: 2.编写某个函数接收文本框的值通过zTree的模糊查找方法getNodesByParamFuzzy(key,value)获得: 3.将匹配到的节点列表结合重新赋值给

转:zTree树控件实战篇:针对多个下拉加载zTree树应该如何做出合理的配置

今天有一个zTree的朋友遇到一个非常棘手的问题,才研究zTree树控件两天就被上头催着看成果,很是苦恼.他面对的问题就是页面内多个地方需要下拉在其文本框下方加载zTree树,由于对zTree下拉加载树的一些关键配置以及原理的不太深入导致问题无从查起.今天就来一起聊聊这样一个下拉加载zTree的问题. 一.几个关键的配置需要注意 1.针对不同的下拉选择需要有自己独立控制zTree显示位置以及隐藏相应标签的方法: 2.需要根据所点击事件定位zTree的显示位置: 3.zTree树选择后需要加以判断

JQuery Ztree 树插件配置与应用小结

JQuery Ztree 树插件配置与应用小结 by:授客 QQ:1033553122 测试环境 Win7 jquery-3.2.1.min.js 下载地址: https://gitee.com/ishouke/front_end_plugin/blob/master/jquery-3.2.1.min.js zTree_v3-master.zip 下载地址: https://github.com/zTree/zTree_v3 插件配置与应用 应用效果展示 HTML代码片段 <!DOCTYPE h

zTree树的模糊搜索

工作需要,所以做了一个比较方便的搜索功能:1.功能实现都是基于zTree的API:2.如有更好的建议,欢迎拍我:其中要说明下的是flag 这个字段, 这是我自己定义的扩展字段,代码中涉及到flag 请先了解zTree哦 1 /** 2 * 展开树 3 * @param treeId 4 */ 5 function expand_ztree(treeId){ 6 var treeObj = $.fn.zTree.getZTreeObj(treeId); 7 treeObj.expandAll(tr

转:zTree树控件入门之checkbox:如何动态设置节点的checkbox选择框启用与禁用状态(chkDisabled)

当一棵树的部分节点根据登入用户角色不同而决定是否启用节点前的checkbox选择框的时候,我们应该如何做呢?也或者如何在页面加载的时候动态根据当前登入用户角色动态切换节点前的checkbox的禁用状态? 针对上列一系列问题,今天这里将做一个统一的讲解: 关于节点前的checkbox选择框是否禁用,是通过属性chkDisabled来决定的,值为true则表示禁用:反之表示启用: 一.初始化设置节点禁用 示例代码如下所示: var zNodes =[ { id:1, pId:0, name:"随意勾

转:zTree树控件key配置之title:zTree树节点名称过长如何省略显示且鼠标移入节点上能够显示全称

当树节点的名称有些很长时,全部显示出来显得很拥挤的情况下,我们会想到用省略节点名称来代替,当鼠标移入节点时能够显示该节点的全称.这样我们应该如何做呢? 首先,我们要在树的节点内多增加一个属性用于设置该节点的全称,这里我们以title名称为例吧,示例代码如下所示: view sourceprint? 1.{ id:233, pId:23, name:"叶子节点233...",title:"叶子节点23333434343434"}, 2.{ id:234, pId:23