一个很好用的Jquery树形控件

官网:http://www.ztree.me/v3/main.php#_zTreeInfo

我主要引用的文件为:

//最新版的JS压缩包
<script src="../Script/jquery-1.11.1.min.js" type="text/javascript"></script>
//Ztree样式
<link href="../CSS/zTreeStyle.css" rel="stylesheet" type="text/css" />
<script src="../Script/jquery.ztree.core-3.5.js" type="text/javascript"></script>
<script src="../Script/jquery.ztree.excheck-3.5.js" type="text/javascript"></script>

根据项目需要主setting设置如下:

 var setting1 = {
check: {
enable: true,
chkboxType: { "Y": "ps", "N": "ps" }
},
data: {
simpleData: {
enable: true }
} }; var setting = {
check: {
enable: true,
chkboxType: { "Y": "ps", "N": "ps" }
},
async: {
enable: true, // 设置 zTree是否开启异步加载模式 加载全部信息
url: "", // Ajax 获取数据的 URL 地址
autoParam: ["id"] // 异步加载时自动提交父节点属性的参数,假设父节点 node = {id:1, name:"test"},异步加载时,提交参数 zId=1
},
data: { // 必须使用data
simpleData: {
enable: true,
idKey: "id", // id编号命名 默认
pIdKey: "pId", // 父id编号命名 默认
rootPId: // 用于修正根节点父节点数据,即 pIdKey 指定的属性值
}
},
// 回调函数
callback: {
//捕获异步加载出现异常错误的事件回调函数 和 成功的回调函数
onAsyncError: zTreeOnAsyncError,
onAsyncSuccess: function (event, treeId, treeNode, msg) {
var name = $("#<%=hdfValue.ClientID%>").val(); if (name != undefined && name != "") {
//默认选中
$.ajax({
//设置同步
type: "POST",
async: false,
url: '',
data: { type: '', name: name },
dataType: 'json', success: function (data) {
//对于获取的数据执行相关的操作,如:绑定、显示等
var treeObj = $.fn.zTree.getZTreeObj('Tree1'); for (var i = ; i < data.length; i++) {
var node = treeObj.getNodeByParam("id", data[i].id, null);
treeObj.checkNode(node);
}
}
}); //学校信息
$.ajax({
type: "POST",
async: false,//同步
url: 'CategoryHandler.ashx',
data: { type: 'search', name: name },
dataType: 'json', success: function (data) {
//对于获取的数据执行相关的操作,如:绑定、显示等
//专业信息;eval将字符串转换为JSON串/
//可以使用http://www.bejson.com/ 检查是否自己的Json串正确与否
$.fn.zTree.init($("#Tree2"), setting1, eval(data[].Specialty));
}
});
} },
onRename: zTreeOnRename
}
}; // 加载错误提示
function zTreeOnAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
alert("加载错误:" + XMLHttpRequest);
}; function beforeRemove(e, treeId, treeNode) {
return confirm("你确定要删除吗?");
}
function onRemove(e, treeId, treeNode) {
if (treeNode.isParent) {
var childNodes = zTree.removeChildNodes(treeNode);
var paramsArray = new Array();
for (var i = ; i < childNodes.length; i++) {
paramsArray.push(childNodes[i].id);
}
alert("删除父节点的id为:" + treeNode.id + "\r\n他的孩子节点有:" + paramsArray.join(","));
return;
}
alert("你点击要删除的节点的名称为:" + treeNode.name + "\r\n" + "节点id为:" + treeNode.id);
} function zTreeOnRename(event, treeId, treeNode, isCancel) {
//可以自定义属性,然后根据这些属性来完成操作
alert(treeNode.id + ",重命名过后的回调函数 " + treeNode.name); //1.ajax更新数据库
} //必备的在ztree加载方法
$(document).ready(function () {
$.fn.zTree.init($("#Tree1"), setting);
$.fn.zTree.init($("#Tree2"), setting1);
}); //将在ztree1中选中的信息填到ztree2
function OnclickRight() {
var treeObj = $.fn.zTree.getZTreeObj('Tree1');
var nodes = treeObj.getCheckedNodes(true);
var checkedValues = '';
var a = [];
for (var i = ; i < nodes.length; i++) {
var obj = {};
obj.id = nodes[i].id;
obj.pId = nodes[i].pId;
obj.name = nodes[i].name;
a.push(obj);
}
if (a.length > ) {
$.fn.zTree.init($("#Tree2"), setting1, a);
}
} //清除选中的tree2节点
function OnclickLeft() {
var treeObj = $.fn.zTree.getZTreeObj("Tree2");
var nodes = treeObj.getCheckedNodes(true); for (var i = , l = nodes.length; i < l; i++) {
if (nodes[i].check_Child_State == ) {
treeObj.removeNode(nodes[i]);
} else if (nodes[i].check_Child_State == - && !(nodes[i].isParent)) {
treeObj.removeNode(nodes[i]);
} else {
treeObj.checkNode(nodes[i], false, false);
}
}
}

附带这个页面的其他几个问题:

<asp:DropDownList ID="ddlB" runat="server"> </asp:DropDownList>

获取此下拉框数据:   YJSEnglish = $("#ContentPlaceHolder1_ddlB").find("option:selected").val();

<asp:CheckBoxList ID="cblCategory" runat="server" RepeatDirection="Horizontal"> </asp:CheckBoxList>

获取多选框数据:

$("[id*=cblCategory] input:checked").each(function () {

Values += $(this).val() + ",";

});

因为我传递到后台的数据有中文信息,所以我的Ajax如下:

var obj = {};

obj结构如下

//组织ID
obj.OrgId = OrgId;

 $.ajax({
url: "Ajaxahsx/CategoryHandler.ashx?action=Save",
data: obj,
type: 'POST',
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: function (data) {
alert("成功");
window.location.href = 'SearchIndex.aspx';
},
error: function (data) {
alert("程序出错");
}
})
}

ztree使用心得的更多相关文章

  1. ztree 使用心得

    最近项目需要用ztree ,初步研究感觉这个插件写的实在是太好了.现总结遇到的问题 封装一颗树 /** * 按类型分组树 * Id 按类型分组ID * treeId 树ID * treeDivId d ...

  2. zTree & ckeditor &ValidateCode.jar 使用个人心得总结

    zTree:依靠 jQuery 实现的多功能 “树插件”. 使用时只需要将下载的压缩包接用,复制里边的css 和 js 到指定目录即可. 如图所示: 在zTree的官网可以找到各种类型树的示例: 地址 ...

  3. 利用ZTree链接数据库实现 [权限管理]

    最近想研究权限管理,看群里有人发了ZTrees模板,我看了下,觉得笔easyUI操作起来更灵活些,于是就开始研究了. 刚开始从网上找了找了个Demo,当然这个并没有实现权限啥的,但实现了前台调用Aja ...

  4. web前端开发控件学习笔记之jqgrid+ztree+echarts

    版权声明:本文为博主原创文章,转载请注明出处.   作为web前端初学者,今天要记录的是三个控件的使用心得,分别是表格控件jqgrid,树形控件ztree,图表控件echarts.下边分别进行描述. ...

  5. js插件ztree使用

    最新给公司后台写了一个配置页面,在网上搜到一个js插件ztree,记录一下使用心得. 首先说一下ztree官网,好多方法我都是从官网api上学习的,官网地址http://www.treejs.cn/v ...

  6. 树结构ztree的 ajax交互的简单使用

    今天做前端页面要用到树结构,用了第三方插件ztree,搞了好久不过终于弄出来了,, 一点小心得.(用的版本 V3 ) 首先看下载的文件结构: 一:将要用到的CSS 和 JS 拷贝到工程中,我这里在工程 ...

  7. jquery zTree插件 json 数据详解

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  9. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

随机推荐

  1. ElasticSearch 查询语法

    ElasticSearch是基于lucene的开源搜索引擎,它的查询语法关键字跟lucene一样,如下: 分页:from/size 字段:fields 排序:sort 查询:query 过滤:filt ...

  2. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 select_from_list_by_label(self, locator, *labels)

    def select_from_list_by_label(self, locator, *labels): """Selects `*labels` from list ...

  3. ChromePHP - Chrome浏览器下的PHP debug工具

    一款 Chrome 下用来配合调试 PHP 的工具,看官方介绍应该和 FirePHP 有异曲同工的.喜欢用Chrome 的PHPer 可以尝试一下. 官方网站:http://www.chromephp ...

  4. Javascript模块化开发-轻巧自制

    Javascript模块化开发-轻巧自制 一.前言现在javascript的流行,前端的代码越来越复杂,所以我们需要软件工程的思想来开发前端.模块化是必不可少的,这样不仅能够提高代码的可维护性.可扩展 ...

  5. eclipse gradle 自动打包

    直接在eclipse项目中建立一个文件,文件名为build.gradle.其实还可以用eclipse再项目上面右击,export->Android->Generate Gradle bui ...

  6. 20151227感知机(perceptron)

    1 感知机 1.1 感知机定义 感知机是一个二分类的线性分类模型,其生成一个分离超平面将实例的特征向量,输出为+1,-1.导入基于误分类的损失函数,利用梯度下降法对损失函数极小化,从而求得此超平面,该 ...

  7. 第三百五十四天 how can I 坚持

    你的问题主要在于:读书不多而买书太多:读书太少又特爱思考,还话唠.. 2012年毕业,辗转无锡,上海,最后来到了北京,逛了北京, 2013年,清明去爬了长城,从天通苑搬到了甜水园, 2014年,爬了泰 ...

  8. Cocos手游录制插件:cocos-plugin

    Cocos手游录制插件:cocos-plugin Testinlab2014-10-29 13:42:27153 次阅读 Cocos手游录制插件,用于添加Testin手游自动化测试支持,支持cocos ...

  9. Android NDK调试C++源码(转)

    [原创文章,转载请保留或注明出处,http://download.csdn.net/download/bigmaxim/5474055] 1. 相关软件 adt-bundle-windows-x86. ...

  10. HD1000A + B Problem

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...