ztree二级菜单有查询条件,ztree一级菜单没有查询条件

来源:互联网 发布:翼龙和彩虹的区别 知乎 编辑:程序博客网 时间:2024/04/28 14:53

今天碰到一个需求,ztree二级菜单有查询条件,ztree一级菜单没有查询条件,一般情况下查询条件都是先取一级菜单,再取二级菜单,但是一级菜单没有查询条件,会多取了一些不应该有的记录,所以这种情况下,只能实行倒推查询,先查二级菜单,得到的结果作为条件去查一级菜单,代码如下:


/*** * 获取模型树 * @param id * @return */public List<ZTreeNode> getModelTree(String id, String userId) {    StringBuffer sql1 = new StringBuffer();    sql1.append(" select ")            .append("  a.tplakey,")            .append("  a.tplaname,")            .append("  a.tplacatecd,")            .append("  a.DISPSEQ as seq")            .append(" from PISS_tp_bas_inf as a")            .append(" where a.tplastat = '1' and modeltype = 1");    sql1.append(" order by seq");    List<ZTreeNode> zTreeNodes1 = jdbcTemplate.query(sql1.toString(),  new RowMapper<ZTreeNode>(){        public ZTreeNode mapRow(ResultSet rs, int rowNum)throws SQLException{            String tplacatecd = rs.getString("tplacatecd");            Integer seq=rs.getInt("seq");            ZTreeNode zTreeNode1 = new ZTreeNode();            zTreeNode1.setId(rs.getString("tplakey"));            zTreeNode1.setName(rs.getString("tplaname"));            zTreeNode1.setIsParent(false);            zTreeNode1.setParentId("F_"+(StringUtil.isNull(tplacatecd) ? "1":tplacatecd));            zTreeNode1.setIndex(seq);            zTreeNode1.settId(tplacatecd);            return zTreeNode1;        }    });    String ids = "";    if(!zTreeNodes1.isEmpty()){        for(int i=0; i<zTreeNodes1.size();  i++){            String tplacatecd = zTreeNodes1.get(i).gettId();            ids += "'"+tplacatecd+"'"+",";        }        ids = ids.substring(0, ids.length()-1);    }else{        ids = "''";    }    StringBuffer sql = new StringBuffer();    sql.append(" select ")            .append("  b.id as flodid,")            .append("  b.name as flodname,")            .append("  b.p_folder_id as pid,")            .append("  b.seq as seq")            .append(" from PISS_tp_folder as b " +                    " where ISENABLE='1' and id in (" +ids+")"+                    " order by seq");    List<ZTreeNode> zTreeNodes = jdbcTemplate.query(sql.toString(),  new RowMapper<ZTreeNode>(){        public ZTreeNode mapRow(ResultSet rs, int rowNum)                throws SQLException {            String flodid = rs.getString("flodid");            String flodname = rs.getString("flodname");            Integer seq=rs.getInt("seq");            ZTreeNode zTreeNode=new ZTreeNode();            zTreeNode.setId("F_"+flodid);            zTreeNode.setName(flodname);            zTreeNode.setIsParent(true);            zTreeNode.setParentId("F_"+rs.getString("pid"));            zTreeNode.setIndex(seq);            return zTreeNode;        }    });    List<ZTreeNode> nodes = new ArrayList<ZTreeNode>();    nodes.addAll(zTreeNodes);    nodes.addAll(zTreeNodes1);    return nodes;}

页面的代码如下:


var rule_tree = new FAPUI.Tree({    border:false,    tbar:false,    ttbar:false,    filterAble:false,    setting : {        async : {            enable: true,//设置 zTree 是否开启异步加载模式            url: path+'/emphasisCompanyController/getModelTree',            autoParam : ['id']//异步加载时需要自动提交父节点属性的参数。[setting.async.enable = true 时生效]        },        data:{            key: {                name: "name"   //设置树节点的name,节点参数name必须和它匹配            },            simpleData: {                enable: true,  //开启树的层级结构                idKey: "id",   //设置树节点id,节点参数id必须与之匹配  节点数据中保存唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]                pIdKey: "parentId" //设置pid,节电参数pid必须与之匹配  节点数据中保存其父节点唯一标识的属性名称。[setting.data.simpleData.enable = true 时生效]            }        },        check : {            enable : true,//设置 zTree 的节点上是否显示 checkbox / radio            chkStyle : "checkbox",//勾选框类型(checkbox  radio[setting.check.enable = true 时生效]            chkboxType: { "Y": "ps", "N": "ps" }//勾选 checkbox 对于父子节点的关联关系。        },        callback: {            beforeCheck: function(treeId, treeNode) {                return !isTreeCheckDisable;            }        }    }});

这样就可以了

原创粉丝点击