效果图:
如图,点击父节点,表格刷新显示所有父节点包括子节点的内容,前台是ztree的树,点击获得树id,主要就是根据id递归查询获得所有子节点id,根据id获得所有信息,ztree的写法,别的博客中有介绍,这边不多说了上干货:
js:
// 树的单击事件
function zTreeOnClickRight(event, treeId, treeNode) {
var treeid = zTreeObj.getSelectedNodes()[0].id;
var treepid = zTreeObj.getSelectedNodes()[0].pId;
var treename = zTreeObj.getSelectedNodes()[0].name;
$("#grid-table").jqGrid('setGridParam',{
datatype:'json',
postData:{'workOrderTDTO1.id':treeid}
}).trigger("reloadGrid");
}
后台 home层:
private String[] findClassification(String id){
String sql = "select c.CLASSIFICATION from CLASSIFICATION c start with id = ? connect by prior id=perid";//这边就是根据父节点id遍历查询子节点信息
Query query = sessionFactory.getCurrentSession().createSQLQuery(sql);
query.setParameter(0, id);
List<String> list = new ArrayList<String>();
list = query.list();
int size = list.size();
String[] arr = (String[])list.toArray(new String[size]);//使用了第二种接口,返回值和参数均为结果
return arr;
}
public List<Knowledge> findReviewed(WorkOrderTDTO workOrderTDTO, Page page) {
StringBuffer hql=new StringBuffer();
hql.append(" from Knowledge w where 1=1 and ( w.status = '2' or w.status = '4') ");
String id = workOrderTDTO.getId();
if (null != id && !"".equals(id)) {
String[] result = findClassification(id);
hql.append(" and (");
for (int i = 0; i < result.length; i++) {
hql.append(" w.classification ='").append(result[i]);
if (result.length-i > 1) {
hql.append("' or ");
}
}
hql.append("' )");
}
String title = workOrderTDTO.getTitle();
if (null != title && !"".equals(title)) {
hql.append(" and w.title like '%").append(title).append("%'");
}
String content = workOrderTDTO.getContent();
if (null != content && !"".equals(content)) {
hql.append(" and w.contentss like '%").append(content).append("%'");
}
String classification = workOrderTDTO.getClassification();
if (null != classification && !"".equals(classification)) {
hql.append(" and w.classification like '%").append(classification).append("%'");
}
String keyword = workOrderTDTO.getKeyword();
if (null != keyword && !"".equals(keyword)) {
hql.append(" and w.keyword like '%").append(keyword).append("%'");
}
Session session = this.sessionFactory.getCurrentSession();
Query query = session.createQuery(hql.toString());
if (null != page) {
page.setTotalCount(count1(hql.toString(), false));
query.setMaxResults(page.getLimit());
query.setFirstResult(page.getStart());
}
List<Knowledge> list = query.list();
return list;
}