在extjs商店设置阅读器

时间:2011-12-07 17:53:27

标签: extjs4

我在extjs4上有一个商店,它返回一个对象列表,我想设置reader属性以便能够计算元素,以便我可以在之后使用分页。

作为参考,extjs使用的示例已经带有count属性(totalCount)和列出的对象类型(主题),而我没有它,只有列表。

供参考: example

此外,在我的代码中,网格无法识别每页的结果限制,但分页工具栏确实:

var sm = Ext.create('Ext.selection.CheckboxModel');

Ext.define('Cliente', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'ID',
        type: 'int'
    }, {
        name: 'Nome',
        type: 'string'
    }, {
        name: 'Email',
        type: 'string'
    }, {
        name: 'RazaoSocial',
        type: 'string'
    }, {
        name: 'TipoDeCliente',
        type: 'string'
    }],
    idProperty: 'ID'

});

var store = Ext.create('Ext.data.Store', {
    pageSize: 3,
    model: 'Cliente',
    remoteSort: true,
    proxy: {
        type: 'ajax',
        url: 'http://localhost:4904/Cliente/ObterClientes',
        extraParams: {
            nome: '',
            tipopessoa: '',
            email: '',
            cpf: '',
            estado: '',
            cidade: '',
            cep: ''
        },
        reader: {
            type: 'json',
            root: 'data'
        },
        simpleSortMode: true
    },
    sorters: [{
        property: 'Email',
        direction: 'DESC'
    }]
});

var pluginExpanded = true;
var grid = Ext.create('Ext.grid.Panel', {
    width: 500,
    height: 250,
    title: 'Array Grid',
    store: store,
    selModel: sm,

    loadMask: true,
    viewConfig: {
        id: 'gv',
        trackOver: false,
        stripeRows: false
    },
    columns: [{
        id: 'gridid',
        text: "ID",
        dataIndex: 'ID',
        hidden: true
    }, {
        text: 'Nome',
        width: 150,
        sortable: true,
        dataIndex: 'Nome'
    }, {
        text: 'Tipo de Cliente',
        width: 100,
        sortable: true,
        dataIndex: 'TipoDeCliente'
    }, {
        text: 'Email',
        width: 150,
        sortable: true,
        dataIndex: 'Email'
    }],
    bbar: Ext.create('Ext.PagingToolbar', {
        store: store,
        displayInfo: true,
        displayMsg: 'Exibindo clientes {0} - {1} of {2}',
        emptyMsg: "Nenhum cliente"
    }),
    renderTo: 'clientes',
});

store.loadPage(1);

1 个答案:

答案 0 :(得分:1)

商店需要总计数来计算分页参数并显示总数。您的服务器端实现必须更改为使用您的数据添加该计数。 同时加载像store.load();这样的数据而不是loadPage。

编辑:你还有一个额外的逗号:renderTo: 'clientes',我建议你通过JSLint运行你的代码。