easyUI树形菜单多级异步加载

1、在页面中创建一个用于触发的文本

<input type="text" id="unit_v" name="unit_v"/>

2、编写json组装数据格式(主要是先生成父节点在生成子节点,代码查询我做了封装你们主要看for以内的就好了)

   String id = request.getParameter("id");
   List<Object> list = new ArrayList<Object>();
   if(id.equals("1")){  
       //父节点 
  DBRowSet ds = ExecuteQuery.getQueryTable("0","SELECT CD_CODE,CD_CHINA FROM C_KEY WHERE LENGTH(CD_CODE)=4", false, new PageModel(-1,-1));
  for(int i=0; i<ds.getRowCount(); i++){
      Map<Object,Object> map = new HashMap<Object,Object>();
      map.put("id", i);
      map.put("unit", ds.getString(i, "CD_CODE"));
      map.put("text", ds.getString(i, "CD_CHINA"));
      map.put("state", "closed");
      list.add(i, map);
  }
   }else{
       //子节点
       String unit = request.getParameter("unit");
       String nid = request.getParameter("nid");
       DBRowSet db = ExecuteQuery.getQueryTable("0","SELECT CD_CODE,CD_CHINA FROM C_KEY WHERE LENGTH(CD_CODE)=9 AND CD_CODE LIKE '"+unit+"%'", false, new PageModel(-1,-1));
       for(int n=0; n<db.getRowCount(); n++){
          Map<Object,Object> map = new HashMap<Object,Object>();
          map.put("id",nid+""+n);//这里的nid是父节点的ID必须带过来不然无法选中
          map.put("unit",db.getString(n, "CD_CODE"));
          map.put("text",db.getString(n, "CD_CHINA"));
          list.add(n, map);
       }
   }
   JSONArray json = JSONArray.fromObject(list);

   out.println(json.toString());

3、添加JS触发事件

$('#unit_v').combotree({
   url: '/wid/DataGrid/idx/c_key.jsp?id=1',
   required: true,
   onlyLeafCheck: true,
   onBeforeExpand:function(node) { //这里是点击父节点后进行查询子节点
      var $tree = $('#unit_v').combotree("tree");
      $tree.tree("options").url = "/wid/DataGrid/idx/c_key.jsp?id=2&unit="+node.unit+"&nid="+node.id;
   },
   onSelect: function(node){
      var unit = node.unit;
      if(unit.length==9){
         $("#unit").val(unit);
      }else{
         //$.messager.alert('消息提示','请选择到具体所单位!','warning');          
      }
   }

});


以上就是所有代码了

easyUI树形菜单多级异步加载