2011-12-07 40 views
2

我在extjs4上有一个商店,它返回一个对象列表,并且我想设置阅读器属性能够对这些元素进行计数,以便以后可以使用分页。在extjs商店设置阅读器

仅供参考,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

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

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

+0

谢谢DmitryB,但我发现另一种方式来解决我的问题: 我加入这条车道的存储功能 自动加载:{开始:0,上限:3}, 然后我有我的方式获得这两个参数,并使用我列表上的“GetRange”来获得所需的分页 – Beoulve