Ir para conteúdo


Foto

[RESOLVIDO] Problema com Paginação Extjs 4.1


  • Por favor, faça o login para responder
8 respostas neste tópico

#1 wagner nogueira

wagner nogueira

    Novato

  • Membros
  • PipPip
  • 26 posts
  • LocationIpatinga - Mg

Postado 02 August 2013 - 22:26

Possuo um store com um total de registros de 2625 itens listados no pagingtoolbar em uma grid. Quando faço um filtro na grid via Controller,  minha pagingtoolbar passa a listar 1005 itens, porém quando clico no botão próxima página meu pagingtoolbar passa a listar novamente 2640 itens e ignora o filtro que foi feito. Alguem já passou por algo semelhante? Estou usando o Extjs 4.1

Antes do Filtro
Ex: {"success":true,"total":"2635"...

Após Filtro
Ex: {"success":true,"total":"1005"...


Ext.define('Teste.store.Caixas',{
    extend      : 'Ext.data.Store',
    autoLoad    : true,
    autoSync    : true,
    pageSize    : 50,
    model       : 'Teste.model.Caixa',
    sorters: [{
         property: 'FANTASIA',
         direction: 'DESC'
     }/*,{
         property: 'CAIXA',
         direction: 'ASC'
     }*/],
    proxy       : {
        type: 'ajax',
       
        api: {
            //create: 'app/data/vendedores/criaCliente.php', 
            read: 'app/data/Caixas/listaCaixa.php',
            update: 'app/data/Caixas/listaCaixa.php',
            //destroy: 'app/data/vendedores/deletaCliente.php',
        },
        actionMethods: {
            create  : 'POST',
            read    : 'POST',
            update  : 'POST',
            destroy : 'POST'
        },
        reader: {
            type: 'json',
            root: 'caixas',
            rootProperty: 'data',
            successProperty: 'success',
            messageProperty: 'message'
        },
        writer: {
            type: 'json',
            writeAllFields: true,
            root: 'caixas',
            encode: true
        },


    },

        
});


No Meu Controller

 consultaCaixa: function() {

        var fim = this.getFim().getSubmitValue();
        var inicio = this.getInicio().getSubmitValue();
        var loja = this.getLoja().getValue();
        var abertura = this.getAbertura().getValue();
        var fechamento = this.getFechamento().getValue();

       this.getCaixasStore().load({
            params: {
            inicio: inicio,
            fim: fim,
            loja: loja,
            abertura: abertura,
            fechamento: fechamento         
            }
        });

    
    }...


#2 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3496 posts
  • LocationBelo Horizonte

Postado 02 August 2013 - 22:52

sk8wagner, seja bem vindo ao nosso fórum, espero que possamos lhe ajudar em suas dúvidas. Sobre esta os parâmetros passados pelo método load são utilizados somente naquela requisição se vc quer que um certo valor seja enviado em todas requisições, ou seja, quando o usuário clicar no botão "Próximo", "Anterior", etc vc deve informar esse no atributo extraParams veja um exemplo na thread http://forum.extjs.c...g35112#msg35112. Assim antes de efetuar o load vc adiciona o parâmetro no proxy. Também pode utilizar o método setExtraParam da classe Ext.data.proxy.Server ao invés de add diretamente no parâmetro. O resultado é o mesmo, mas utilizando o método é o mais correto.
Espero que lhe ajude.

"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)


#3 wagner nogueira

wagner nogueira

    Novato

  • Membros
  • PipPip
  • 26 posts
  • LocationIpatinga - Mg

Postado 02 August 2013 - 23:03

sk8wagner, seja bem vindo ao nosso fórum, espero que possamos lhe ajudar em suas dúvidas. Sobre esta os parâmetros passados pelo método load são utilizados somente naquela requisição se vc quer que um certo valor seja enviado em todas requisições, ou seja, quando o usuário clicar no botão "Próximo", "Anterior", etc vc deve informar esse no atributo extraParams veja um exemplo na thread http://forum.extjs.c...g35112#msg35112. Assim antes de efetuar o load vc adiciona o parâmetro no proxy. Também pode utilizar o método setExtraParam da classe Ext.data.proxy.Server ao invés de add diretamente no parâmetro. O resultado é o mesmo, mas utilizando o método é o mais correto.
Espero que lhe ajude.


Olá amigão obrigado pela velocidade, tenho acompanhado o forum e sempre me ajuda, dessa vez nao encontrei nada que eu precisava, vc tem um exemplo de como enviar o ExtraParams com mais de 1 parametro, tentei e não consegui. Obrigado pela ajuda.

#4 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3496 posts
  • LocationBelo Horizonte

Postado 02 August 2013 - 23:11

Olá amigão obrigado pela velocidade, tenho acompanhado o forum e sempre me ajuda ...

:D que bom meu caro essa é a intenção.

... dessa vez nao encontrei nada que eu precisava, vc tem um exemplo de como enviar o ExtraParams com mais de 1 parametro, tentei e não consegui. Obrigado pela ajuda.

Vc quer mandar mais de uma propriedade? Ou seja vc quer enviar os dados "inicio", "fim", "loja", "abertura" e "fechamento". Se for isso é só vc add cara um no objeto extraParams, tipo:
...
var caixasStore = this.getCaixasStore(),
    caixasStoreProxy = caixasStore.getProxy();

// ADD OS PARÂMETROS
caixasStoreProxy.setExtraParam('inicio', inicio);
caixasStoreProxy.setExtraParam('fim', fim);
caixasStoreProxy.setExtraParam('loja', loja);
caixasStoreProxy.setExtraParam('abertura', abertura);
caixasStoreProxy.setExtraParam('fechamento', fechamento);

caixasStore.load();
...

"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)


#5 wagner nogueira

wagner nogueira

    Novato

  • Membros
  • PipPip
  • 26 posts
  • LocationIpatinga - Mg

Postado 02 August 2013 - 23:15

Como aprendi aqui em Minas Gerais...... CERTO IGUAL BOCA DE BODE... KKKK
Valeu Amigão....
Funcionou

#6 Marcelo Augusto

Marcelo Augusto

    Member Avançado

  • Membros
  • PipPipPip
  • 232 posts
  • LocationCaicó, Rio Grande do Norte

Postado 23 June 2016 - 10:07

@Legolas, pra que isso funcione, eu teria que enviar os parâmetros dentro do evento que verifica se o botão de próxima página foi clicado? Tô com o mesmo problema. No meu caso, eu faço o filtro enviando os parâmetros pelo filters dentro do store.load(). 

filtrarDataEventSelect: function (field, value, e0pts) {
		var checkFormat = field.up('toolbar').getComponent('month_year_only');
		var store = Ext.getStore('pontoeletronico');
		store.load({
			filters: [
				{
					property: 'dataPonto',
					value: checkFormat.getValue() ? Ext.Date.format(value, 'Y-m') : value
				},
				{
					property: 'checkDateFormat',
					value: checkFormat.getValue()
				}
			]
		});
	},


#7 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3496 posts
  • LocationBelo Horizonte

Postado 12 July 2016 - 21:03

Marcelo, é como eu disse na minha primeira resposta, o que é passado para o método load só terá efeito naquela requisição.

 

Já que você utiliza o filtro, tente utilizar o método filter do Store que irá enviar os filtros em cada requisição, lembrando que a propriedade remoteFilter tem que estar como true.


"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)


#8 Marcelo Augusto

Marcelo Augusto

    Member Avançado

  • Membros
  • PipPipPip
  • 232 posts
  • LocationCaicó, Rio Grande do Norte

Postado 13 July 2016 - 09:25

Legolas, no caso eu tenho que utilizar o filter no evento que diz respeito ao clique no botão de próxima página? Não entendi muito bem..



#9 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3496 posts
  • LocationBelo Horizonte

Postado 13 July 2016 - 20:27

Legolas, no caso eu tenho que utilizar o filter no evento que diz respeito ao clique no botão de próxima página? Não entendi muito bem..

Se você filtrar os dados utilizando o método filter do Store, não é necessário, pois internamente em toda requisição que o Proxy do Store realizar, os parâmetros de filtro irão na requisição.


"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)





0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos