shaoyang

递归实现树结构


    
        $(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;
        }

分类:

技术点:

相关文章: