Paging Grid显示所有记录 - Ext JS

时间:2014-03-18 13:59:49

标签: extjs

修改

事实证明,商店不能有重复的ID。当我删除此字段时,所有记录显示 - 这意味着网格不尊重pageSize

我遇到一个问题,我的所有商店记录都显示在我的网格中。数据从JSON请求中正确返回,并且pagingtoolbar行为正确。

这是我的商店:

var store = Ext.create('Ext.data.Store', {
                    storeId     : 'resultsetstore',
                    autoLoad    : false,
                    model       : model,
                    pageSize    : itemsPerPage, // 3
                    proxy: {
                        type    : 'ajaxwithpayload', //custom ajax proxy to read 'jsonData'
                        url     : 'MCApp',
                        jsonData: searchquery,
                        reader: {
                            type    : 'json',
                            root    : 'elements'
                        } 
                    }

});

我在这里加载商店,并返回所有正确的结果:

store.load({ 
                params: { start: 0, limit: itemsPerPage },
                callback : function(records, operation, success) {
                    if(success) {
                        mainresponse = operation.response.responseText;
                        if( mainresponse.length == 0 ){
                            alert('No results returned');
                            return;
                        }
                        var jsonResponse = Ext.JSON.decode(mainresponse);
                    }
                    else {
                        alert('Search Failed: Could not reach the server');
                    }

最后,一个简单的网格pagingtoolbar

var grid = Ext.create('Ext.grid.Panel', {
        title: 'Test Data',
        store: store,
        columns: [{
            text: 'Technical Name',
            dataIndex: 'tech'
        }, {
            text: 'ID',
            dataIndex: 'element.id'
        }, {
            text: 'Name',
            dataIndex: 'name',
            mapping: 'element.name'
        }, {
            text: 'View',
            dataIndex: 'view'
        }, {
            text: 'Description',
            dataIndex: 'description'
        }],
       dockedItems: [{
            xtype: 'pagingtoolbar',
            store: store,
            pageSize: itemsPerPage,
            dock: 'bottom',
            displayInfo: true
        }],
        renderTo: Ext.getBody()
    }); 

这里的问题是并非我的所有结果都加载到网格中。似乎遇到重复的ID时,它会缩短结果。那个可能不是的问题,只是我的猜测

在我的日志中,我看到了我需要返回的所有数据。在下图中,我应该使用相同的Element ID 001 3行,但只显示一行:

enter image description here

另外需要注意的是,当我单击pagingtoolbar上的Next按钮时,结果不会更改,并且它在我的控制台上也会显示为 POST 。我不确定它是应该这样做还是 GET

我用闪电来说明 令人震惊 这是不行的

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

需要注意的一件非常重要的事情是服务器负责分页而不是ExtJS。服务器不得返回所有行,只能返回当前页面的行。您的服务器端代码必须考虑参数pagestartlimit才能让客户端工作。

我认为,除了重复的ID之外,是您遇到问题的主要原因。特别是为什么你在第一页和第二页看到相同数据的原因:
ExtJs向服务器询问第1页的数据并获取所有行。之后,ExtJs向服务器询问第2页的数据并再次获取相同的行。这不起作用。

答案 1 :(得分:0)

当您将名称属性命名为" id"时可能会出现这种情况。在模型的fields数组中。试着改变这一点。