2011-02-17 149 views
2

Hy everyone, 我有ExtJS 3.2,PHP5.3和Oracle 10g XE。ExtJs網格數據從JsonStore不加載

JSON從MyExtJs.php返回:


[{ 「FIRST_NAME」: 「艾倫」, 「LAST_NAME」: 「阿貝爾」},{ 「FIRST_NAME」: 「孫大信」, 「LAST_NAME」: 「Ande」},{「FIRST_NAME」:「Mozhe」,「LAST_NAME」:「Atkinson」},{「FIRST_NAME」:「David」,「LAST_NAME」:「Austin」},{「FIRST_NAME」:「Hermann」, 「LAST_NAME」: 「貝爾」},{ 「FIRST_NAME」: 「Shelli」, 「LAST_NAME」: 「百大」},{ 「FIRST_NAME」: 「阿密特」, 「LAST_NAME」: 「邦達」},{ 「FIRST_NAME」: 「Elizabeth」,「LAST_NAME」:「Bates」},{「FIRST_NAME」:「Sarah」,「LAST_NAME」:「Bell」},{「FIRST_NAME」:「David」,「LAST_NAME」:「Bernstein」}]


數據存儲:

var store = new Ext.data.JsonStore({ 
        autoLoad: true, 
        url: 'MyExtJs.php', 
        fields: [ 
          {name: 'firstname'}, 
          {name: 'lastname'} 
          ] 
            }); 

網格:

var grid = new Ext.grid.GridPanel({ 
     store: store, 
     columns: [ 
      { 
       id  : 'fname', 
       header : 'First Name', 
       width : 160, 
       sortable : true, 
       dataIndex: 'firstname' 
      }, 
      { 
       id  : 'lname', 
       header : 'Last Name' , 
       width : 75, 
       sortable : true, 
       dataIndex: 'lastname' 
      } 
       ], 
     stripeRows: true, 
     height: 300, 
     width: 500, 
     title: 'Report', 
     autoExpandColumn: 'lname', 
     stateful: true, 
     stateId: 'grid' 
            }); 

我只顯示標題和網格的邊界,但裏面沒有數據。

親切的問候, 丹

+1

那麼,JSON字段是「FIRST_NAME」,「LAST_NAME」,並且在您的數據存儲中,您會說「firstname」和「lastname」 –

回答

3

在你的領域配置包括像這樣的「映射」屬性:

var store = new Ext.data.JsonStore({ 
    autoLoad: true, 
    url: 'MyExtJs.php', 
    fields: [ 
     {name: 'firstname', mapping:'FIRST_NAME'}, 
     {name: 'lastname', mapping:'LAST_NAME'} 
    ] 
}); 

這並不是說你讀的JSON Ext.data.Store,它使用分機.data.DataReader通常讀取來自服務器的數據,這個在Store的配置中設置的「fields」道具被傳遞給它的DataReader來配置它自己。 DataReader使用Ext.data.Field來讀取每個字段,看起來here,ExtJS的文檔很好!