递归实现树结构
$(document).ready(function () {
$(\'#departmentName\').combotree({
multiple:true,
editable:false,
panelHeight:\'400\',
panelMaxHeight:560,
onlyLeafCheck:false,
cascadeCheck:false,
loadFilter: function(rows){
return TreeConvert(rows);
}
});
})
//初始化用户基础数据
window.onload= function userInitData(){
//通过Ajax获取基础数据
$.ajax({
type : "post",
async : false,
url : "${pageContext.request.contextPath}/do/user/init",
data : {},
dataType : "json",
success : function(resultdata) {
if (resultdata.isSuccess) {
$(\'#departmentName\').combotree("loadData",AddIconCls(resultdata.data.depaType));
}
else
{
parent.$.messager.alert(\'提示\',resultdata.message,\'warning\');
}
},
error : function(errorMsg) {
parent.$.messager.alert(\'提示\',\'服务器未响应,请稍后再试\',\'error\');
}
});
temporaryDataInit();
}
function temporaryDataInit(){
$.ajax({
async : false,
type:\'get\',
url:"${pageContext.request.contextPath}/do/test/initTemporaryData",
data:{},
success:function(resultdata){
}
})
}
//树的过滤转换方法
function TreeConvert(rows){
function exists(rows, parentId){
for(var i=0; i<rows.length; i++){
if (rows[i].id == parentId) return true;
}
return false;
}
var nodes = [];
// get the top level nodes
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (!exists(rows, row.parentId)){
nodes.push({
id:row.id,
text:row.name,
iconCls:row.iconCls
});
}
}
var toDo = [];
for(var i=0; i<nodes.length; i++){
toDo.push(nodes[i]);
}
while(toDo.length){
var node = toDo.shift(); // the parent node
// get the children nodes
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (row.parentId == node.id){
var child = {id:row.id,text:row.name,iconCls:row.iconCls};
if (node.children){
node.children.push(child);
} else {
node.children = [child];
}
toDo.push(child);
}
}
}
return nodes;
}
//给树的数据集合中的每个节点数据添加图标属性
function AddIconCls(treeData)
{
for(var i=0;i<treeData.length;i++)
{
if(CheckIsLeaf(treeData[i].id,treeData))
{
treeData[i].iconCls="icon-conditionName";
}
else
{
treeData[i].iconCls="icon-conditionName";
}
}
return treeData;
}
//判断是否是叶子节点
function CheckIsLeaf(nodeId,treeData)
{
var isLeaf=true;
$.each(treeData,function(n,value){
if(value.parentId==nodeId)
{
isLeaf=false;
return false;
}
});
return isLeaf;
}