递归无限级树下拉菜单

it2022-05-05  169

Java代码    /**    *树形菜单VO    */   public class SelectTree implements Serializable{       private int id;       private String name;       private List<SelectTree> child = new ArrayList<SelectTree>();                  //getter & setter ....略   }   /** *树形菜单VO */ public class SelectTree implements Serializable{ private int id; private String name; private List<SelectTree> child = new ArrayList<SelectTree>(); //getter & setter ....略 }

代码片段:

Java代码    /**   * 构建树型菜单数据   */  public List<SelectTree> buildNode(int pid,List<YcChannel> channels){       List<SelectTree> result = new ArrayList<SelectTree>();       for(YcChannel chl:channels){           SelectTree node = new SelectTree();           if(null != chl.getParentId() && chl.getParentId().equals(pid)){               node.setId(chl.getChannelId());               node.setName(chl.getName());               List<SelectTree> children = buildNode(chl.getChannelId(),channels);               if(null != children && 0 < children.size()){                   node.setChild(children);               }               result.add(node);            }       }       return result;   }     public String queryChannelList() {       ycChannelList = this.channelSer.queryChannelList();       List<SelectTree> trees = new ArrayList<SelectTree>();       for(YcChannel yc:ycChannelList){           if(null == yc.getParentId()){               SelectTree t = new SelectTree();               t.setId(yc.getChannelId());               t.setName(yc.getName());               t.setChild(buildNode(t.getId(),ycChannelList));               trees.add(t);           }       }       this.setAjaxData(trees);       return AJAX_DATA;   }   /** * 构建树型菜单数据 */ public List<SelectTree> buildNode(int pid,List<YcChannel> channels){ List<SelectTree> result = new ArrayList<SelectTree>(); for(YcChannel chl:channels){ SelectTree node = new SelectTree(); if(null != chl.getParentId() && chl.getParentId().equals(pid)){ node.setId(chl.getChannelId()); node.setName(chl.getName()); List<SelectTree> children = buildNode(chl.getChannelId(),channels); if(null != children && 0 < children.size()){ node.setChild(children); } result.add(node); } } return result; } public String queryChannelList() { ycChannelList = this.channelSer.queryChannelList(); List<SelectTree> trees = new ArrayList<SelectTree>(); for(YcChannel yc:ycChannelList){ if(null == yc.getParentId()){ SelectTree t = new SelectTree(); t.setId(yc.getChannelId()); t.setName(yc.getName()); t.setChild(buildNode(t.getId(),ycChannelList)); trees.add(t); } } this.setAjaxData(trees); return AJAX_DATA; }

前端JS代码:

Js代码        //recursive tree node       function buildNode(len,data){           var prefix = "|";           for(var i=0;i<len;i++){               prefix += "-";           }           $.each(data,function(i,item){               if(0 < item.child.length){                   $('#typeid').append("<option value="+item.id +">" + prefix + item.name + "</option>");                   buildNode(len+1,item.child);               }else{                   $('#typeid').append("<option value="+item.id +">" + prefix + item.name + "</option>");               }           });       }              $.ajax({           url:'${base}/channel/channelAction!queryChannelList.action',           type:'GET',           dataType:'json',           contentType:'application/json',           success:function(json){               if(json.success){                   $('#typeid').empty();                   $('#typeid').append("<option value='0'>请选择栏目...</option>");                   $.each(json.data,function(i,item){                       if(null == item.parentId){                           $('#typeid').append("<option value="+item.id +">" + item.name + "</option>");                           buildNode(1,item.child);                       }                   });               }           },           error:function(){               alert("加载栏目出错!");           }       });          });  

转载于:https://www.cnblogs.com/liyuxin/archive/2011/07/09/2101855.html


最新回复(0)