Extjs TreeGrid:设置数据根目录无效
我正在尝试设置TreeGrid,我的数据对象如下所示:Extjs TreeGrid:设置数据根目录无效,extjs,extjs4,extjs-mvc,Extjs,Extjs4,Extjs Mvc,我正在尝试设置TreeGrid,我的数据对象如下所示: { "code": "success", "data": { "text": ".", "children": [ { "clientname": "Market", "contact": "OpenX Market Advertiser", "email": "asdasd
{
"code": "success",
"data": {
"text": ".",
"children": [
{
"clientname": "Market",
"contact": "OpenX Market Advertiser",
"email": "asdasd@asdasd222.de",
我需要告诉Ext它应该使用数据作为根元素:
var store = Ext.create('Ext.data.TreeStore', {
model: 'Task',
proxy: {
type: 'ajax',
url: 'http://localhost/rocketads/trunk/advertisers/index/stats:true/',
reader:{
type:'json',
root:'data'
}
},
});
这对我来说不起作用,尽管我已成功地将其用于普通存储。因为您已使用
root:“data”设置了读卡器。
您必须在json中将“children”替换为“data”:
{
"code": "success",
"data": {
"text": ".",
"data": [ // << not "children"
{
{
“代码”:“成功”,
“数据”:{
“文本”:“,
“数据”:[//不幸的是,对于TreeStore,无论您对root使用什么,它都会被用作每个后续级别的根,因此它可能会找到根节点,然后找不到它的数据属性。将顶级属性从data更改为children,或者将children的每个实例更改为data。您也可以使用以下方法:
reader: {
type: 'json',
// See http://stackoverflow.com/questions/9159627/extjs-loading-tree-from-json-file-using-mvc
// http://stackoverflow.com/questions/6263380/extjs4-json-treestore
root: function(o) {
if (o.data) {
return o.data;
} else {
return o.children;
}
}
},
我在ExtJS4.2中也有同样的问题
我试图通过以下代码来解决这个问题
Ext.define('XZSoftware.view.sysconfig.permission.PermissionWindow', {
extend: 'Ext.window.Window',
itemid: "sysconfig-permission-window",
vierConfig: { loadMask: true },
layout:
{
type: "fit"
},
minWidth: 400,
minHeight: 300,
tree: null,
treeStore: null,
initComponent: function () {
var me = this;
Ext.log("initComponent()", me);
me.treeStore = Ext.create("Ext.data.TreeStore", {
proxy: {
type: "ajax",
actionMethods: { read: "POST" },
reader: {
type: "json",
root: "data"
},
url: '/permissiontree_load.xzsoftware?o=AAAAACB'
},
root: {
text: "Premission Tree",
expanded: true
}
});
me.tree = Ext.create("Ext.tree.Panel", {
rootVisible: false,
store: me.treeStore
});
me.items = [
me.tree
];
this.callParent(arguments);
},
Version: "1.0.0.0"
});
JSON将由HTTP请求响应
{
"total": 17,
"data": [{
"data": [{
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "HSBC"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "All IDoc"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "ProCRM"
}],
"expanded": true,
"leaf": "false",
"checked": false,
"text": "Application Portal"
}, {
"data": [{
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Order List"
}, {
"data": [{
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Report by monthly total"
}],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Order Report"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Search"
}],
"expanded": true,
"leaf": "false",
"checked": false,
"text": "CNMOT - OMS"
}, {
"data": [{
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Company"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Funcation Setting"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Menu Setting"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Page Setting"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Permission"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Roles"
}, {
"data": [],
"expanded": true,
"leaf": "true",
"checked": false,
"text": "Users"
}],
"expanded": true,
"leaf": "false",
"checked": false,
"text": "System Setting"
}],
"success": true,
"message": "Success"
}
注:
1.应在TreeStore中设置根配置。
2.JSON中的children字段需要更改为store代理中的root配置。在我的示例中,“children”设置为“data”