分页在extjs中无法正常工作

时间:2015-02-19 12:13:40

标签: ajax json extjs proxy store

在JSON中我得到总数为67,但在网格上只显示两条记录。寻呼工具栏显示msg"显示1 - 2 of 2"并且下一个和上一个按钮也被禁用 下面是我的js文件的代码。 如何验证totalProperty是否获得正确的总计数?

Ext.onReady(函数(){

var simpsonsStore = Ext.create('Ext.data.Store', {
    storeId: 'simpsonsStore',
    pageSize: 2,
    autoLoad: false,
    buffered: true,
    fields: ['name', 'email', 'phone'],
    proxy: {
        type: 'ajax',
        pageParam: undefined,
        url: '/apex/getPatientData',
        startParam: 'start',
        limitParam: 'limit',
        noCache: false,
        reader: {
            type: 'json',
            root: 'items',
            totalProperty: 'total'
        }
    },

});
simpsonsStore.load({
    params: {
        start: 0,
        limit: 2
    }
});
Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [{
        header: 'Name',
        dataIndex: 'name'
    }, {
        header: 'Email',
        dataIndex: 'email',
        flex: 1
    }, {
        header: 'Phone',
        dataIndex: 'phone'
    }],
    height: 200,
    width: 400,
    dockedItems: [{
        xtype: 'pagingtoolbar',
        store: simpsonsStore, 
        dock: 'bottom',
        displayInfo: true
    }],
    renderTo: Ext.getBody()
});

});

3 个答案:

答案 0 :(得分:1)

很可能你的JSON没有记录 totalProperty: 'total'您需要返回此字段中所有记录的数量

{ 'total': 67, 'items': [{ .... }] }

答案 1 :(得分:0)

只有在您将限制参数设置为2时才会显示两条记录:

params: {
            start: 0,
            limit: 2
        }

此外,商店中的pageSize设置为2,因此在加载数据时,它会将商店中的数据页视为最多2条记录。请参阅文档 - http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.data.Store-cfg-pageSize

答案 2 :(得分:0)

好的,你的问题看起来是你的json响应的结构。

@nniicc在正确的轨道上,你的JSON证明了这一点,因为你在数据行中返回总数,而不是作为JSON对象的单独属性

  

{rnum:1,开始:" 0",结束:" 10",总数:67,姓名:" 1A",电子邮件:   " Guruprit",...}

所以应该更像这样

{
    'total': 67,
    'items': [{rnum: 1, begin: "0", end: "10", name: "1A", email: "Guruprit",…},
...]
}