2015-01-12 23 views
1

我想讀取JSON數據在extjs這裏是我的代碼如下。不能讀取和設置JSON數據與extjs4

我做錯了什麼?我在Extjs很新。

我想我無法獲得json值,或者無法在面板上正確寫下它。

在此先感謝。

Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.dd.*' ]); 

    var urlGetName = '${ctx}/main/list'; 


    Ext.define('DataObject', { 
     extend : 'Ext.data.Model', 
     fields : [ 'name' ] 
    }); 


    var storeName = Ext.create('Ext.data.Store',{ 
     model:'DataObject', 
     autoLoad : false, 
     proxy : { 
      type : 'ajax', 
      actionMethods: { 
       read: 'GET' 
      }, 
       reader : { 
        type : 'json', 
        root: 'data', 
       }, 
       api : { 
        read: urlGetName 
       } 
     },listeners: { 
      load: function(store, records) { 
         dataa =store.getAt(0).get('data'); 
      } 
     } 
    }); 

    Ext.onReady(function() { 

     var firstGridStore = Ext.create('Ext.data.Store', { 
      model : 'DataObject', 
      data : dataa 
     }); 

     var columns = [ { 
      text : "Name", 
      flex : 1, 
      sortable : true, 
      dataIndex : 'name' 
     } ]; 

     // declare the source Grid 
     var firstGrid = Ext.create('Ext.grid.Panel', { 
      multiSelect : true, 
      viewConfig : { 
       plugins : { 
        ptype : 'gridviewdragdrop', 
        dragGroup : 'firstGridDDGroup', 
        dropGroup : 'secondGridDDGroup' 
       }, 
       listeners : { 
        drop : function(node, data, dropRec, dropPosition) { 
         var urlL = '${ctx}/main/list'; 
         var param = data; 
         postDataAsParamsINN({param:param},urlL,function(resp){ 
          var success=resp.success; 
          if(success){ 
           Ext.MessageBox.alert('succes', 'bravaa'); 
          }else{ 
           Ext.MessageBox.alert('error','eroross'); 
          } 
         }); 
        } 
       } 
      }, 
      store : firstGridStore, 
      columns : columns, 
      stripeRows : true, 
      title : 'First Grid', 
      margins : '0 2 0 0' 
     }); 
    }); 
+1

出現了什麼問題?我只能考慮不加載商店作爲autoLoad是假的或該服務器返回無效或空的數據。什麼來自服務器? – Saki

回答

2

您不應該使用兩個商店來填充另一個商店。刪除FirstGridStore並使用預定義的遠程存儲替代:

// Model 
Ext.define('DataObject', { 
    extend : 'Ext.data.Model', 
    fields : [ 'name' ], 
    idProperty: 'name' 
}); 

// Store 
var storeName = Ext.create('Ext.data.Store',{ 
    model:'DataObject', 
    autoLoad: true, 
    queryMode: local, 
    proxy: { 
     type: 'ajax', 
     actionMethods: { 
      read: 'GET' 
     }, 
     reader: { 
      type : 'json', 
      root: 'data', 
     }, 
     api: { 
      read: urlGetName 
     } 
    } 
}); 

// Grid 
var columns = [{ 
    text : "Name", 
    flex : 1, 
    sortable : true, 
    dataIndex : 'name' 
}]; 

     // declare the source Grid 
var firstGrid = Ext.create('Ext.grid.Panel', { 
    multiSelect : true, 
    viewConfig : { 
     plugins : { 
        ptype : 'gridviewdragdrop', 
        dragGroup : 'firstGridDDGroup', 
        dropGroup : 'secondGridDDGroup' 
       }, 
       listeners : { 
        drop : function(node, data, dropRec, dropPosition) { 
         var urlL = '${ctx}/main/list'; 
         var param = data; 
         postDataAsParamsINN({param:param},urlL,function(resp){ 
          var success=resp.success; 
          if(success){ 
           Ext.MessageBox.alert('succes', 'bravaa'); 
          }else{ 
           Ext.MessageBox.alert('error','eroross'); 
          } 
         }); 
        } 
       } 
      }, 
      store : storeName, // defined store 
      columns : columns, 
      stripeRows : true, 
      title : 'First Grid', 
      margins : '0 2 0 0' 
     }); 
    }); 
+0

「真正的」問題只是被分配給false的'autoLoad'。但是,使用一家商店加載第二家商店並不是非常有用...... – MatRt