您的位置:首页 > 其它

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

2017-11-02 17:48 337 查看
今天碰到一个需求,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 ro
4000
wNum)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;
}
}
}
});


这样就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: