2012-02-23 76 views
3

我試圖建立一個的TreeGrid,我的數據對象是這樣的:的TreeGrid:設置數據根本沒有任何效果

{ 
    "code": "success", 
    "data": { 
     "text": ".", 
     "children": [ 
      { 
       "clientname": "Market", 
       "contact": "OpenX Market Advertiser", 
       "email": "[email protected]", 

我要告訴分機它應該使用數據根元素:

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' 
     } 
    }, 
}); 

這對我來說不起作用,雖然我成功地將它用於普通商店。

回答

1
與TreeStore,無論你使用的根

不幸也被用作根對於每個後續級別,因此可能找到根節點,然後找不到其data屬性。將頂級屬性從數據更改爲子級,或將每個子實例更改爲數據。

3

既然你設置你的讀者root: 'data'必須更換「孩子」在你的JSON「數據」:

{ 
    "code": "success", 
    "data": { 
     "text": ".", 
     "data": [ // << not "children" 
      { 
3

您也可以使用此:

 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; 
      } 
     } 
    }, 
0

我有同樣的問題在ExtJS的4.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中設置root配置。 2.JSON中的子字段需要更改爲商店代理中的根配置。在我的樣本中,「孩子」被設置爲「數據」。

相關問題