在使用easyUI 的treeGrid的时候,很多时候我们从数据库取出来的数据treeGrid却不能读取显示成一个树:如下
{
menuCode: "a00",
menuName: "管理员首页",
menuUrl: "/main/admin/index.action",
menuPCode: "-1",
isLeaf: "0",
status: "1",
icon: null,
createUser: "system",
createDate: "2014-01-24 17:10:25",
modifyUser: "system",
modifyDate: "2014-01-24 17:10:25"
},
{
menuCode: "a0001",
menuName: "修改密码",
menuUrl: "/main/admin/modifyPwd.action",
menuPCode: "a00",
isLeaf: "1",
status: "1",
icon: null,
createUser: "system",
createDate: "2014-01-24 17:10:25",
modifyUser: "system",
modifyDate: "2014-01-24 17:10:25"
},
{
menuCode: "a0002",
menuName: "图片上传",
menuUrl: "/image/admin/uploadImage.action",
menuPCode: "a00",
isLeaf: "1",
status: "1",
icon: null,
createUser: "system",
createDate: "2014-01-24 17:10:25",
modifyUser: "system",
modifyDate: "2014-01-24 17:10:25"
},
例如以上是我从数据库表中取的值并转化为json格式,逻辑上我是靠menuCode和menuPcode来表示父子的继承关系,但是easyUI的treeGrid不买账,她可不会理解你的父子关系是通过menuCode和menuPcode表现的
于是乎有人觉得json格式应该如下:
通过设置children来方便treeGrid解析,于是乎有人开始对取出来的表数据进行遍历啊,拼接字符串啦之类的操作,往这个格式上拼凑,其实完全没必要
解决办法:
使用谷歌浏览器打开如下链接
打开对应的json文件:
多了个_parentId,就是这个很重要的字段才使得treeGrid识别出父子关系
那么如何给自己的json格式增加这个字段呢?
loadFilter: function (data){
resultData = data;
if(ajaxResultJudge.analyseResult(data,0) ==true){
data.rows = data.data;
$.each(data.rows, function(i) {
var parentId = data.rows[i].menuPCode;
if(parentId != "-1"){
data.rows[i]._parentId = parentId;
}
});
data.total = data.more;
return data;
}else{
return ajaxResultJudge.transformToUI(null);
}
resultData = data;
},