`

xloadtree的一个改造

    博客分类:
  • JAVA
阅读更多

修改了xloadtree的部分源码以适合自己使用。

1.修改了因节点个数过多而造成刷新时候的缓慢。(你可以用原版试试加上500个子节点,然后调用reload()方法)。

2.加入了单选和复选的功能。

3.加入了线程,在500个子节点以上才会启用。引用Thread.js,设置webFXTreeConfig.useThread=true.

4.增加了data属性,使得每个节点都可以绑定自己想绑定的数据上去。

确定线程不能保证节点的顺序,如果对顺序有要求,那就不适用了。

该例子实现了对一颗树的增删改查。

因为是延迟加载,所以在每个父节点的子节点1000以内都是比较快的。

看哈效果图:



 

 项目jar包:

看哈部分代码treeRadio.js:

webFXTreeConfig.rootIcon		= "xloadtree/images/xp/folder.png";
webFXTreeConfig.openRootIcon	= "xloadtree/images/xp/openfolder.png";
webFXTreeConfig.folderIcon		= "xloadtree/images/xp/folder.png";
webFXTreeConfig.openFolderIcon	= "xloadtree/images/xp/openfolder.png";
webFXTreeConfig.fileIcon		= "xloadtree/images/xp/file.png";
webFXTreeConfig.lMinusIcon		= "xloadtree/images/xp/Lminus.png";
webFXTreeConfig.lPlusIcon		= "xloadtree/images/xp/Lplus.png";
webFXTreeConfig.tMinusIcon		= "xloadtree/images/xp/Tminus.png";
webFXTreeConfig.tPlusIcon		= "xloadtree/images/xp/Tplus.png";
webFXTreeConfig.iIcon			= "xloadtree/images/xp/I.png";
webFXTreeConfig.lIcon			= "xloadtree/images/xp/L.png";
webFXTreeConfig.tIcon			= "xloadtree/images/xp/T.png";
webFXTreeConfig.blankIcon       = "xloadtree/images/blank.png";
webFXTreeConfig.type            = "radio"; //checkbox or radio

var prjPath = '/xloadtreeDemo';
var actionSuffix = '.action';
var namespace = '/Controller';
var loadRootNodeAction = 'loadRootNode_XloadTree';
var initAction = 'init_XloadTree';
var addNodeAction = 'addNode_XloadTree';
var saveOrUpdateRootNodeAction = 'saveOrUpdateRootNode_XloadTree';
var deleteNodeAction = 'deleteNode_XloadTree';
var loadChildNodeAction = 'loadChildNode_XloadTree';
var updateNodeAction = 'updateNode_XloadTree';
var loadTreeUrl = prjPath + namespace+'/' + loadRootNodeAction + actionSuffix;
var loadChildNodeUrl = prjPath + namespace+'/' + loadChildNodeAction + actionSuffix;
var initTreeUrl = prjPath + namespace+'/' + initAction + actionSuffix;
var addNodeUrl = prjPath + namespace+'/' + addNodeAction + actionSuffix;
var saveOrUpdateRootNodeUrl = prjPath + namespace+'/' + saveOrUpdateRootNodeAction + actionSuffix;
var deleteNodeUrl = prjPath + namespace+'/' + deleteNodeAction + actionSuffix;
var updateNodeUrl = prjPath + namespace+'/' + updateNodeAction + actionSuffix;
var tree;

$(function(){
	loadTree();
});

//加载根节点
function loadTree(){
	$.ajax({
		url:loadTreeUrl,
		dataType:'json',
		success:function(rootNode){
			var id = rootNode.id;
			if(id != '0'){
				updateTree(rootNode);
			}else{
				$('#rootId').html('null');
				$('#rootPid').html('null');
			}
		}
	});
	
}

//获取根节点的子节点集合
function updateTree(rootNode){
	$('#rootText').val(rootNode.text);
	$('#rootAction').val(rootNode.action);
	$('#rootId').html(rootNode.id);
	$('#rootPid').html('null');
	tree = new WebFXLoadTree(rootNode.text,initTreeUrl,rootNode.action);
	tree.data = rootNode;
	$('#radioDiv').html(tree.toString());
}

//点击单选按钮的回调事件
function setRadioData(data){
	if(typeof(data) == 'string'){
		data = jQuery.parseJSON(data);
	}
	$('#pid').val(data.id);
}

//添加新节点
function addNode(){
	var selectNode = tree.selectNode;
	if(selectNode==null){
		alert('选中一个节点进行新增操作!');
		return;
	}
	var treeNode = new Object();
	treeNode.text = $("#text").val();
	treeNode.action = $("#action").val();
	treeNode.pid = $("#pid").val();

	if(treeNode.text==''){
		alert('text必须填写!');
		return;
	}
	
	$.ajax({
		type:'POST',
		url:addNodeUrl,
		data:treeNode,
		dataType:'json',
		success:function(newNode){
			//直接添加即可
			selectNode.add(new WebFXTreeItem({
				text:newNode.text,
				action:newNode.action,
				data:newNode
			}));
			selectNode.src = newNode.src;
			selectNode.expand();
			//清空内容
			$("#text").val('');
			$("#action").val('');
		}
	});
}

//保存根节点信息
function saveOrUpdateRootNode(){
	var treeNode = new Object();
	treeNode.text = $("#rootText").val();
	treeNode.action = $("#rootAction").val();
	treeNode.id = $("#rootId").html();
	if(treeNode.text==''){
		alert('text不能为空');
		$("#rootText").focus();
		return;
	}
	if(treeNode.id == 'null')treeNode.id = -1;
	$.ajax({
		type:'POST',
		url:saveOrUpdateRootNodeUrl,
		data:treeNode,
		dataType:'json',
		success:function(rootNode){
			$("#"+tree.id+"-anchor").html(rootNode.text);
		}
	});
}

//刷新选中节点的子节点信息
function flushNode(){
	var selectNode = tree.selectNode;
	if(selectNode==null){
		alert('选中一个节点进行刷新操作!');
		return;
	}
	if(selectNode.childNodes.length!=0){
		if(selectNode.reload){
			selectNode.reload();
		}else{
			var parentNode = selectNode.parentNode;
			var index = selectNode.index;
			if(parentNode){
				parentNode.reload();
			}
		}	
	}
}

//删除节点
function delNode(){
	var selectNode = tree.selectNode;
	if(selectNode==null){
		alert('选中一个节点进行删除操作!');
		return;
	}
	var data = selectNode.data;
	if(typeof(data) == 'string'){
		data = jQuery.parseJSON(data);
	}
	$.ajax({
		type:'POST',
		url:deleteNodeUrl,
		data:{id:data.id},
		success:function(result){
			if(Number(result)!=0){
				selectNode.remove();
				tree.selectNode = null;
			}
		}
	});
}

//编辑节点信息
function editNode(){
	var selectNode = tree.selectNode;
	if(selectNode==null){
		alert('选中一个节点进行编辑操作!');
		return;
	}
	var data = selectNode.data;
	if(typeof(data) == 'string'){
		data = jQuery.parseJSON(data);
	}
	var treeNode = new Object();
	treeNode.text = $("#text").val();
	treeNode.action = $("#action").val();
	treeNode.id = data.id;
	if(treeNode.text==''){
		alert('text不能为空');
		$("#text").focus();
		return;
	}
	$.ajax({
		type:'POST',
		url:updateNodeUrl,
		data:treeNode,
		dataType:'json',
		success:function(updateNode){
			$("#"+selectNode.id+"-anchor").html(updateNode.text);
			$("#"+selectNode.id+"-anchor").attr('href',updateNode.action);
			selectNode.data = updateNode;
		}
	});
	
}

 

 xloadtreeDemo.rar 附带mysql脚本数据。

  • 大小: 11 KB
  • 大小: 11.3 KB
  • 大小: 36.3 KB
分享到:
评论

相关推荐

    xloadtree

    首先,"xloadtree"是一个基于Web的树形菜单组件。它允许开发者在网页上创建可操作的树结构,用于展示层次化的数据,如文件系统、组织结构或者导航菜单等。这种组件通常由JavaScript实现,能够动态地加载数据,提高...

    xloadtree 例子

    `xloadtree`是一个专门用于实现动态Ajax树视图的工具,它能够帮助开发者高效地展示层级结构的数据,比如组织架构、文件系统或者复杂的分类信息。在这个例子中,我们将深入探讨`xloadtree`的工作原理以及如何使用它来...

    修改xloadtree 支持checkbox radio 鼠标右键菜单

    "修改xloadtree支持checkbox radio鼠标右键菜单"这个主题涉及到的是对一个特定的JavaScript组件——xLoadTree的增强,使其具备更多功能,提升用户体验。下面将详细阐述这个主题所涵盖的知识点。 1. **xLoadTree**:...

    带单选复选按钮的XloadTree

    文件名"perfectTree"可能是指该实现的一个示例代码库或演示文件,包含了创建和操作这种带单选和复选按钮的树结构所需的所有代码和资源。通过分析和学习这个文件,开发者可以了解到如何在自己的项目中集成这种功能,...

    xloadtree.rar_xloadtree_xloadtree api

    本文将深入探讨XLoadTree API中的一个重要更新——增加的重载刷新节点功能,它允许开发者在不刷新整个树的情况下,仅刷新指定的结点,从而提高了应用的性能和用户体验。 首先,理解XLoadTree的基础概念是至关重要的...

    xloadtree.rar_xloadtree

    xloadtree是一个针对这种数据结构的实现,它提供了一种简单且直观的方式来创建、操作和展示树型数据。本文将深入探讨xloadtree的实现原理、使用方法及其在实际应用中的价值。 首先,xloadtree的核心是树节点的概念...

    xloadtree无限极ajax tree

    原理:初始化状态查询出根节点和第一级节点,并且第一级节点的图标是 + ,点击 + 出现loading...,然后再显示出节点下的子级,如果没有子级,则 + 变成 - ;将加载完后出现的子级菜单用JS保存在客户端,下载再点 + ...

    JS 动态树 异步加载树 xloadtree WebFXLoadTree

    而"xloadtree" 可能是一个JavaScript文件,包含了xloadtree库的源码或者一个使用示例。 总之,JS动态树和WebFXLoadTree是JavaScript开发中用于构建高效、可交互的异步加载树形结构的工具,它们通过异步加载策略优化...

    动态树例子 xloadtree

    "xloadtree"是这种动态树实现的一个实例,专门用于解决大数据量树生成的问题。 动态树的核心思想是分页和懒加载。在用户滚动到树的底部或者点击展开某个节点时,才向服务器请求下一部分数据。这种方式避免了初始...

    xloadtree中文版

    【xloadtree中文版】是一款基于JavaScript开发的动态树形数据展示组件,主要适用于Web应用程序中需要呈现层次结构数据的情况。这款组件以其易用性、灵活性和强大的功能在IT行业中得到了广泛应用。它允许开发者轻松地...

    xloadtree.rar_ xloadtree_java xml_jsp xml_xloadtree_xloadtree aj

    XLoadTree是一个基于Java、XML、JSP和Ajax技术构建的组件,主要用于在Web应用程序中实现动态加载和展示树形结构数据。它巧妙地结合了这些技术,提供了高效、交互性强的用户界面,尤其适用于数据层次结构复杂的应用...

    xloadtree资源包

    这个资源包的核心组件是"xloadtree.js",它是一个轻量级但功能强大的库,用于在网页中动态加载和呈现层级数据。 首先,我们来看看"XLoadTree.js"。这是一个JavaScript库,它的主要功能是创建和管理Web页面上的目录...

    xloadtree使用总结

    xloadtree使用总结xloadtree使用总结xloadtree使用总结xloadtree使用总结xloadtree使用总结xloadtree使用总结xloadtree使用总结xloadtree使用总结

    xloadtree.rar_java xml_xloadtree_xml 比较

    本主题聚焦于"XLoadTree",它是一个专门用于解析和显示XML树结构的Java工具,适用于处理和比较XML文档。 首先,"XLoadTree"这个名字暗示了它是一个加载XML并将其呈现为树状结构的库或工具。在"Java XML"领域,这样...

    xloadtree.js实现页面树形结构js开发包

    `xloadtree.js` 是一个专为实现这种页面树形结构而设计的JavaScript库,它结合了`xtree.js`和`xtree.css`等组件,提供了强大的功能和良好的用户体验。下面将详细介绍`xloadtree.js`及其相关组件的工作原理和应用场景...

    xloadtree.rar_javascript_xloadtree

    “xloadtree”可能是一个JavaScript库或插件,专门用于创建和管理这样的交互式树视图。这种库通常会提供一系列的功能,如节点的添加、删除、展开、折叠、搜索以及自定义节点样式等。在JavaScript中实现这样的功能,...

    XLoadTree 例子

    这是一个用XLoadTree 例子,这个例子作了很久了,很多人加我,所以我把源码找出来放到这里,希望对大家有所帮助。原文: http://collate5.blog.163.com/blog/static/1435652620076279591866

Global site tag (gtag.js) - Google Analytics