2015-06-02 9 views
0

我有一個帶有分頁的網格。當我設置一個過濾器時,ajax請求被成功執行,json返回值看起來很好,過濾的行出現在我的網格中。TypeError:在Ext JS 5.1上進行遠程過濾時數據爲空

載入中...彈出不會消失,螢火蟲在EXT-ALL-debug.js報告錯誤:類型錯誤:數據爲空(134684行)。代碼在這一點是:

data = store.getData(); 
items = data.items; // error 

我檢查了我的JS幾次,但我找不到問題。

不幸的是我不能創建一個小提琴,因爲我使用遠程過濾。因此,這裏的腳本:

Ext.onReady (function() { 
    Ext.define('FooModel', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'myId', type: 'int' }, 
     { name: 'myDate', type: 'date', dateFormat: 'Y-m-d H:i:s' }, 
     { name: 'myString', type: 'string' }, 
     { name: 'myFilename', type: 'string' }, 
     { name: 'myUser', type: 'string' } 
    ] 
    }); 

    Ext.define('FooStore', { 
    extend: 'Ext.data.Store', 
    model: 'FooModel', 

    autoLoad: true, 
    autoDestroy: true, 

    proxy: { 
     type: 'ajax', 
     url: 'test.php', 
     reader: { 
     type: 'json', 
     rootProperty: 'import_files', 
     messageProperty: 'error', 
     } 
    }, 

    remoteFilter: true, 
    remoteSort: true, 
    sorters: [{ 
     property: 'myId', 
     direction: 'ASC' 
    }], 
    pageSize: 5 
    }); 

    var theFooStore = new FooStore(); 

    theFooStore.load({ 
    callback: function(records, operation, success) { 
     if(!success) { 
     Ext.Msg.alert('Error', operation.getError()); 
     } 
    } 
    }); 

    Ext.define('FooGrid', { 
    extend: 'Ext.grid.Panel', 
    xtype: 'grid-filtering', 
    requires: [ 'Ext.grid.filters.Filters' ], 

    width: 1000, 
    height: 700, 
    renderTo: 'content', 
    plugins: 'gridfilters', 

    emptyText: 'No Matching Records', 
    loadMask: true, 
    stateful: true, 

    store: theFooStore, 
    defaultListenerScope: true, 

    columns: [ 
     { dataIndex: 'myId', text: 'My Id', filter: 'number' }, 
     { xtype: 'datecolumn', dataIndex: 'myDate', text: 'My Date', renderer: Ext.util.Format.dateRenderer('d.m.Y'), filter: true }, 
     { dataIndex: 'myString', text: 'My String', filter: 'list' }, 
     { dataIndex: 'myFilename', text: 'My Filename', 
     renderer: function(value, meta, record) { 
      return Ext.String.format('<a href="test.php?download={0}">{1}</a>', record.data.myId, value); 
     }, 
     filter: { 
      type: 'string', 
      itemDefaults: { emptyText: 'Search for...' } 
     } 
     }, 
     { 
     dataIndex: 'myUser', text: 'My User', 

     filter: { 
      type: 'string', 
      itemDefaults: { emptyText: 'Search for...' } 
     } 
     }, 
    ], 

    dockedItems: [{ 
     xtype: 'pagingtoolbar', 
     store: theFooStore, 
     dock: 'bottom', 
     displayInfo: true 
    }] 
    }); 

    new FooGrid(); 
}); 

這裏是一個示例JSON返回值:

{ 
    "success" : true, 
    "total" : 19, 
    "import_files" : [{ 
    "myId" : "1", 
    "myFilename" : "foo bar.xlsx", 
    "myDate" : "2015-05-19 13:23:21", 
    "myUser" : "ABC", 
    "myString" : "Lorem ipsum" 
    }, 
    ... 
    ] 
} 

已經有人經歷了同樣的問題?它會導致什麼?

回答

0

只是我的運氣。發佈問題後不久發現答案。

刪除filter: 'list'選項我的我的字符串列是解決方案。

+0

我看到此問題,但刪除「過濾器:列表」並不像解決方案。我需要使用列表進行過濾,因此如果沒有它,過濾將不會發生。 – harryBundles