需求:
使用treegrid显示数据,但是不想一下把所有的数据都查出来,treegrid如果想实现懒加载需要有一个state字段来判断是否有子节点,值为open或closed,但是我数据库表没有这个字段啊,总不能为了实现这个功能加个state字段吧,这个不现实,因此只能改造VO和sql语句,虚构一个字段了。
code:
前端代码:
<div class="table_list" style="width:90%;height:100%">
<table id="tg" class="easyui-treegrid" style="width:100%;height:100%"
data-options="
url: '/type/getTreeNodes',
method: 'get',
idField: 'typeCode',
treeField: 'name',
rownumbers: true,
animate: true,
collapsible: true,
fitColumns: true
">
<thead>
<tr>
<th data-options="field:'name',width:300">名称</th>
<th data-options="field:'updateTime',width:200">修改时间</th>
<th data-options="field:'remark',width:500">备注</th>
<th data-options="field:'opName',width:100">操作人</th>
</tr>
</thead>
</table>
</div>
后台代码:
jQueryeasyUI treegrid在访问url时会自动带个id参数,值是idField设置的字段的值。
controller
@RequestMapping("getTreeNodes")
@ResponseBody
public Map<String, Object> getTreeNodes(String id) {
//使用id接收参数值
}
mapper.xml中的sql,
select tst.* , u.CHN_NAME,
case when
(select count(*) from type t2 where t2.parent_id = t1.type_code) > 0
then
'closed'
ELSE 'open'
end STATE
from type t1
LEFT JOIN t_user u
ON t1.OP_USERID = u.USER_ID
WHERE t1.PARENT_ID = #{parentId}