Extjs 4向网格显示JSON数据(按需)?

时间:2011-05-25 09:32:36

标签: json extjs store extjs4

在达到URL后,如何将此数据显示到网格,autoLoad:true,仅加载首先定义的URL,但如何“动态”显示加载的JSON到网格?,用新调用的JSON重新加载数据?

buttons: [{
   text: 'Load1',
   handler:function(){
      myStore.getProxy().url = 'app/kontaktGrid1.json';
      myStore.load();
      grid.getView().refresh();
}},{
   text: 'Load2',
   handler:function(){
      myStore.getProxy().url = 'app/kontaktGrid2.json';
      myStore.load();
      grid.getView().refresh();
}}]

Ext.define('app.gridStore', {
     extend: 'Ext.data.Model',
     fields: [
        'name', 'email', 'phone'
     ]
});
var myStore =Ext.create('Ext.data.Store', {
    model: 'app.gridStore',
    proxy: {
        type: 'ajax',
        url : '',
        reader:{ 
            type:'json'
    }
    },
    autoLoad:false
});


--Grid in Border Layout Center--
items:[{
xtype:"grid",
id:"kontaktGrid",
store: myStore,
border: false,
columns: [
    {header: 'name',sortable : false,  dataIndex: 'name'},
    {header: 'email',sortable : false, dataIndex: 'email'},
    {header: 'phone',sortable : false, dataIndex: 'phone'}
]  
}]

这不起作用,只从服务器加载没有相反的数据。

1 个答案:

答案 0 :(得分:3)

首先,你为什么要加载你的json?即使它正在工作......这是一个简单的方法:

text: 'Load1',
handler:function(){
   myStore.load({
       scope : this,
       url : 'app/kontaktGrid1.json'
   });
   //myStore.getProxy().url = 'app/kontaktGrid1.json';
   //myStore.load();
   //grid.getView().refresh();
}
来自docs

,方法load的定义是 通过配置的代理将数据加载到商店 ..

第二,你的探测器仅从服务器加载没有相反的数据 ..
这意味着json,store和模型没有错误...
我认为你的问题出在网格面板上。
尝试告诉我们你是如何创建网格的

确保您的网格列引用(dataIndex)到您的json

var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    columns: [
        {text     : 'name',    sortable : false, dataIndex:"name"},
        {text     : 'email',   sortable : false, dataIndex:"email"},
        {text     : 'phone',   sortable : false, dataIndex:"phone"}
    ],
    //.....