<%@ 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 = , 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 == ) {
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 = ;
function addHoverDom(treeId, treeNode) {
var sObj = $("#" + treeNode.tId + "_span");
if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > ) 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) + ;
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 = ; i < childNodes.length; i++) {
if (i == childNodes.length - ) {
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 = ;
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 == })
var nodes;
for (i = ; i < node.length; i++) {
if (i == node.length - ) {
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 = ; i <= ; i++) {
var n = Math.floor(Math.random() * 16.0).toString();
guid += n;
if ((i == ) || (i == ) || (i == ) || (i == ))
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 ; 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 == "")
{
APSqlProcs.spCOMPANYORGANIZATION_Update(ref pID, pName, Guid.Empty, "", 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(), 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 > )
{
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()) ? : 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 >= ? 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() 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() NULL,
PARENTID UNIQUEIDENTIFIER NULL,
LEVEL NVARCHAR() NULL
)
if exists (select * from sysobjects where id = object_id('dbo.spCOMPANYORGANIZATION_Update') AND OBJECTPROPERTY(id, N'IsProcedure') = )
Drop Procedure [dbo].[spCOMPANYORGANIZATION_Update];
GO Create Procedure [dbo].[spCOMPANYORGANIZATION_Update]
(
@ID uniqueidentifier output,
@MODIFIED_USER_ID uniqueidentifier = NULL,
@NAME nvarchar() = NULL,
@PARENTID uniqueidentifier = NULL,
@LEVEL nvarchar() = 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) = 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') = )
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 =
, DATE_MODIFIED = getdate()
, MODIFIED_USER_ID = @MODIFIED_USER_ID
where ID = @ID
and DELETED = ;
end
GO Grant Execute on dbo.spCOMPANYORGANIZATION_Delete to public;
GO
----------------------------------------------------------------------------------------------------

ztree树应用的更多相关文章

  1. ztree树 叶子节点路径的集合

    1.Question Description: ztree树各个节点都带有路径,如“/根节点”,"/根节点/一级节点",“根节点/一级节点/二级节点‘; 现在想获取所选的最末级节点 ...

  2. MVC4加载zTree树小控件

    前言: 第一次学习使用MVC框架,找了个练手项目,加载zTree树小控件.下面我就一步步说明我这次练手的经历以记录.如果有什么错误,希望各位大神帮忙指正,谢谢. 第一步: 利用VS2010新建一个MV ...

  3. easyui&8Jquery ztree树插件

    7Jquery easyui前台UI框架 开发包: 7.1Layout页面布局 将课后资料中后台系统前台页面素材导入项目中 1.导入Jquery,easyui相关js,css文件 <link r ...

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

    在通用权限管理系统中,有很多数据结构是有父子关系的,如组织机构,部门,权限菜单等,在展示的时候,大多数是通过zTree树的形式展现的,如下: 权限菜单展示 这种数据后台输出比较容易处理,参考如下获取某 ...

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

    今天有一个zTree的朋友遇到一个非常棘手的问题,才研究zTree树控件两天就被上头催着看成果,很是苦恼.他面对的问题就是页面内多个地方需要下拉在其文本框下方加载zTree树,由于对zTree下拉加载 ...

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

    是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题 ...

  7. ztree树的模糊搜索功能

    在做机场项目的时候,业务为一个input框,点击的时候出现一个下拉树,这个下拉树是所有的设备,由于设备太多,加上分了区域,为了更好的用户体验,设计一个模糊搜索的功能,方便用户进行选择 具体实现过程如下 ...

  8. Ztree树增删改查菜单,遇到的问题总结

    一.引言 我今天做了一个Ztree树增删改查菜单的功能.其中遇到了很多坑爹的问题,和大家讲述一下. 二.代码展示 1.Ztree树前台代码 <%@ page language="jav ...

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

    JQuery Ztree 树插件配置与应用小结 by:授客 QQ:1033553122 测试环境 Win7 jquery-3.2.1.min.js 下载地址: https://gitee.com/is ...

  10. ztree树默认根据ID默认选中该条数据

    functiongetZtree() { varsetting = { view: { expandSpeed: 100, selectedMulti: true, showLine: true, / ...

随机推荐

  1. UI对象库-定位元素与程序分离

    1.前言 这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?我想说的是如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面,一个page存放对应的 ...

  2. 关于Knowledge Transfer的一点想法

    维基百科中对于Knowledge Transfer(知识转移)的定义是: 知识转移是指分享或传播知识并为解决问题提供投入.在组织理论中,知识转移是将知识从组织的一个部分转移到另一个部分的实践问题. 与 ...

  3. Python多线程操作

    多线程是一门编程语言的重要操作. GIL(全局解释器锁)存在于python解释器中,用来确保当前只有一个线程被执行,当一个线程获得GIL后,这个线程将被执行,退出时释放GIL,由下一个获得GIL的线程 ...

  4. [kuangbin带你飞]专题二十二 区间DP-B-LightOJ - 1422

    题意大概是这样,第i天必须穿a[i](某一种类)的衣服,你可以套着穿很多件,对于第i天,你有两种操作,一种是脱掉现在的衣服,一种是穿上新的一件,但是你脱掉的衣服,以后不能再穿.问最少需要多少件衣服? ...

  5. jQuery 与 Ajax 的应用

    Ajax 全称为 "Asynchronous JavaScript and XML"(异步 JavaScript 和 XML ),它并不是指一种单一的技术,而是有机地利用了一系列交 ...

  6. Excel vba中访问ASP.NET MVC项目,记录访问时间,文件名称

    每30秒连接一次服务器,连接成功单元格变绿色,连接失败变红色,状态单元格为17行,2列 1,打开excel文件,进入vba编辑器,新建一个modules模块,在里面先写一个每30秒执行一次ConnSe ...

  7. CMakeList.txt设置OpenCv路径

    源文件imageBasics.cpp #include <iostream> #include <chrono> using namespace std; #include & ...

  8. ionic3隐藏子页面的tabs和配置返回按钮

    在app.modlues.ts文件中修改 imports: [ BrowserModule, IonicModule.forRoot(MyApp, { tabsHideOnSubPages: 'tru ...

  9. sass基本用法

        什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常 ...

  10. 北京2018网络赛A题

    题意:给你一个迷宫,迷宫有开始节点和结束节点,问你从开始走到结束的最小时间,其中,#代表这个点有毒气,身上必须带着氧气瓶才行,B代表每次进入这个点可以带一个氧气瓶,最多身上带五个,P代表进入这个点加速 ...