easyui tree loadFilter的使用

 


实例化。这里增加了三个属性,可以指定idFiled,textFiled和parentField。所以这里的simpleData可以不严格转换成tree的数据格式。

$(function(){
	$(‘#tt3‘).tree({
		checkbox: true,
		url: ‘tree_data_simp.php‘,
		parentField:"pid",
		textFiled:"name",
		idFiled:"key"
	});
});

tree_data_simp.php 的json数据类型。是一个扁平结构数据集。

[
    {
        "key": 1,
        "name": "Folder1",
        "iconCls": "icon-ok"
    },
    {
        "key": 2,
		"pid": 1,
        "name": "File1",
        "checked": true
    },
    {
        "key": 3,
		"pid": 1,
        "name": "Folder2",
        "state": "open"
    },
    {
        "key": 4,
        "pid": 3,
        "name": "File3",
        "attributes": {
            "p1": "value1",
            "p2": "value2"
        },
        "checked": true,
        "iconCls": "icon-reload"
    },
    {
        "key": 8,
        "pid": 3,
        "name": "Async Folder"
    },
    {
        "key": 9,
        "name": "language",
        "state": "closed"
    },
    {
        "key": "j1",
        "pid": 9,
        "name": "Java"
    },
    {
        "key": "j2",
        "pid": 9,
        "name": "C#"
    }
]

自定义loadFilter的实现

$.fn.tree.defaults.loadFilter = function (data, parent) {
	var opt = $(this).data().tree.options;
	var idFiled,
	textFiled,
	parentField;
	if (opt.parentField) {
		idFiled = opt.idFiled || ‘id‘;
		textFiled = opt.textFiled || ‘text‘;
		parentField = opt.parentField;

		var i,
		l,
		treeData = [],
		tmpMap = [];

		for (i = 0, l = data.length; i < l; i++) {
			tmpMap[data[i][idFiled]] = data[i];
		}

		for (i = 0, l = data.length; i < l; i++) {
			if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
				if (!tmpMap[data[i][parentField]][‘children‘])
					tmpMap[data[i][parentField]][‘children‘] = [];
				data[i][‘text‘] = data[i][textFiled];
				tmpMap[data[i][parentField]][‘children‘].push(data[i]);
			} else {
				data[i][‘text‘] = data[i][textFiled];
				treeData.push(data[i]);
			}
		}
		return treeData;
	}
	return data;
};

 

延伸使用,对于easyui的数据节点,想要根据层级显示不同的icon

function getLevel(node, level){
        var children = node.children;
        if(level == 0)
            node.iconCls = "icon-add";
        else if( level == 1)
            node.iconCls = "icon-remove";
        else if ( level == 2)
            node.iconCls = "icon-save";
        if(children)
        for( var i = 0; i < children.length; i++){
                getLevel(children[i], level+1);
        }
    }
<ul class="easyui-tree" data-options="url:‘tree.do.json‘, method:‘get‘, animate:true, lines:true, checkbox:true, loadFilter:function (data, parent){
    for( var i = 0; i < data.length; i++){
            getLevel(data[i], 0);
    }
    return data;

}"></ul>
时间: 2024-10-13 11:55:04

easyui tree loadFilter的使用的相关文章

[转]easyui tree 模仿ztree 使用扁平化加载json

原文地址:http://my.oschina.net/acitiviti/blog/349377 参考文章:http://www.jeasyuicn.com/demo/treeloadfilter.html 一.扩展原因 ztree使用了一种扁平化的数据加载方式,就是id(自身id),pid(父id)的方式,参考http://www.ztree.me/v3/demo.php#_102,于是扩展easyui tree 也使用这种亲民的方式: 二.基本方法 1,载入扩展文件 2,在JS中实例化TRE

Jquery easyui tree的使用

这个ui用的一切都是json数据.树也是如此! 后台需要返回与格式匹配的json数据才能正确加载树. 页面定义一个ui: <ul id="messageInfoAddTree" class="easyui-tree" checkbox="true" data-options="lines:true" style="height:94%"></ul> JS访问后台: //人员树 $('

【EasyUI学习-2】Easyui Tree的异步加载

作者:ssslinppp       1. 摘要 easyui相关的介绍可以上其官网或者百度去搜索,这里不做介绍. Easyui Tree的使用,官网或者easyui中文网站,也有相关介绍,但是官方提供的实例所使用的json是写死的,不是后台实时读取的.在实际的项目中,要显示的tree数据,一般都是从数据库中读取,然后通过通过ajax或者其他技术将tree的json数据发送到前台,然后显示. 本文将介绍easyui tree的异步加载,以及手动展开tree. 2. tree的相关介绍 上图是一个

easyui tree 模仿ztree 使用扁平化加载json

参考文章:http://www.jeasyuicn.com/demo/treeloadfilter.html 一.扩展原因 ztree使用了一种扁平化的数据加载方式,就是id(自身id),pid(父id)的方式,参考http://www.ztree.me/v3/demo.php#_102,于是扩展easyui tree 也使用这种亲民的方式: 二.基本方法 1,载入扩展文件 2,在JS中实例化TREE 三.具体方法(easyui1.4.1下测试可用) 1,载入扩展JS //作者孙宇 //自定义l

.NET easyUI tree树状结构

简单的制作后台制作写一个json(string类型)格式 public partial class goodstype_type : System.Web.UI.Page { public string datalist = "",tree=""; goodstypeManage bll = new goodstypeManage(); goodstype model = new goodstype(); protected void Page_Load(objec

递归和循环---从EasyUI Tree 发现自己的硬伤

前一阵子,朋友托我帮忙用vb.net写一个数独游戏,我当时的第一个想法---万能的互联网肯定有资源,肯定有人写---当然这是必须的---我站在巨人的肩膀上帮朋友完成代码---但是我突然觉得自己站在巨人这么高的肩膀上太高耸,想要找一下脚踏实地的感觉,所以我想自己写写,看看能不能写出来,结果就是------我压根没有思路. 对,毫不夸张,无从下手. 更深刻的一件事就是项目中用的的树状结构(easyui tree 实现),同样是根据数据库动态生成,我站在巨人的肩膀上,看着网上类似的datatable转

JQuery EasyUi Tree获取所有checkbox选中节点的id和内容

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>    <head>        <meta name="generator" content="HTML Tidy, see www.w3.org">      

Easyui Tree方法扩展 - getLevel(获取节点级别)

Easyui Tree一直就没有提供这个方法,以前没有用到,所以一直没怎么在意,这次自己用到了,顺便扩展了一个方法,分享给大家. $.extend($.fn.tree.methods, { getLevel:function(jq,target){ var l = $(target).parentsUntil("ul.tree","ul"); return l.length+1; } }); 用法: var node = $().tree("getSele

EasyUI tree读取sql server的表结构得到json格式

本来项目需要一个tree的树结构,后来随便选择了一个easyUI tree开源框架,后来碰到一个问题,我是要从数据库递归出结构的,转成json的,怎么做?难道是递归了拼接StringBuilder?要是这样做就太傻了,当时也打算这么做.然后各种百度,博客园,QQ群去问,回答的也是五花八门,没人给我指点详细的,我只好自己琢磨了. 第一:递归数据库的表. 第二:序列化最后的递归结果. 这里是我的数据库的表: 然后下面是代码: 这里需要建立一个实体类,类的属性跟数据库表的一样,只是多了一个泛型属性,是