MD
KeepNavigation 1.00.00 - Classe para manter a paginação
Olá, boa tarde,
Mais cedo fiz uma postagem em www.adianti.com.br/forum/pt/view_4420
Um colega meu pegou esse código e fez um componente, ficou bem bacana, uma vez instalado, seu uso é muito fácil, abaixo detalhes.
Ao limpar um filtro, limpamos também os dados do KeepNavigation:
Da mesma forma, ao realizar um novo filtro, também limpamos os dados do KeepNavigation.
Já no onReload, quando uma listagem é acessada, os dados parâmetros são nulos, nesse caso, o KeepNavigation devolve os dados de paginação do último acesso. Caso a paginação seja utilizada, ou ainda, caso algum parâmetro seja encaminhado para o onReload, ele são atualizados no KeepNavigation:
É isso ai, com o componente e apenas 3 linhas podemos manter a paginação ao entrar e sair das listagens.
Abraço!
Mais cedo fiz uma postagem em www.adianti.com.br/forum/pt/view_4420
Um colega meu pegou esse código e fez um componente, ficou bem bacana, uma vez instalado, seu uso é muito fácil, abaixo detalhes.
Ao limpar um filtro, limpamos também os dados do KeepNavigation:
public function onClean()
{
$this->form->clear();
// clear the search data in the session
TSession::setValue('List_filter_data', Null);
// limpa dados do keepNavigation
KeepNavigation::clear(get_class($this));
$param=array();
$param['offset'] =0;
$param['first_page']=1;
$this->onReload($param);
}
Da mesma forma, ao realizar um novo filtro, também limpamos os dados do KeepNavigation.
/**
* Register the filter in the session
*/
public function onSearch()
{
// get the search form data
$data = $this->form->getData();
// clear session filters
TSession::setValue('List_filter_data', Null);
// limpa dados do keepNavigation
KeepNavigation::clear(get_class($this));
// Restante do onSearch não é modificado
}
Já no onReload, quando uma listagem é acessada, os dados parâmetros são nulos, nesse caso, o KeepNavigation devolve os dados de paginação do último acesso. Caso a paginação seja utilizada, ou ainda, caso algum parâmetro seja encaminhado para o onReload, ele são atualizados no KeepNavigation:
/**
* Load the datagrid with data
*/
public function onReload($param = NULL)
{
try
{
// open a transaction with database 'database'
TTransaction::open('database');
// creates a repository for List
$repository = new TRepository('List');
$limit = 10;
// creates a criteria
$criteria = new TCriteria;
// atualiza ou recupera os parametros de paginação com dados da sessão
$param = KeepNavigation::update($param, get_class($this));
// default order
if (empty($param['order']))
{
$param['order'] = 'id';
$param['direction'] = 'asc';
}
$criteria->setProperties($param); // order, offset
$criteria->setProperty('limit', $limit);
// Restante do onReload não é modificado
}
}
É isso ai, com o componente e apenas 3 linhas podemos manter a paginação ao entrar e sair das listagens.
Abraço!
Funcionou perfeito. Valeu!
Boa tarde,
Excelente post, experimentei aqui e funcionou super bem mas observei que as listas feitas usando o TStandardList não tinham como usar o KeepNavigation. Um pequeno estudo e pesquisa nas classes base do Adianti e achei onde implementar a mudança para funcionar em toda listagem padrão.
1º Passo - Copiar o KeepNavigation.class.php para a pasta meu_projeto/lib/adianti/base
2º Passo - Troque o nome do KeepNavigation.class.php para KeepNavigation.php
3º Passo - Edite na pasta meu_projeto/lib/adianti/base AdiandiStandardListTrait.php e faço o seguinte:
a) Adicione no início:
b) na Função onSearch mude:
c) na função onReload mude:
Com essas poucas mudanças todas lista padrão irá manter a navegação mesmo que troque de página.
Espero que ajude
b) na Função onSearch mude:
Boa tarde,
Excelente post, experimentei aqui e funcionou super bem mas observei que as listas feitas usando o TStandardList não tinham como usar o KeepNavigation. Um pequeno estudo e pesquisa nas classes base do Adianti e achei onde implementar a mudança para funcionar em toda listagem padrão.
1º Passo - Copiar o KeepNavigation.class.php para a pasta meu_projeto/lib/adianti/base
2º Passo - Troque o nome do KeepNavigation.class.php para KeepNavigation.php
3º Passo - Edite na pasta meu_projeto/lib/adianti/base AdiandiStandardListTrait.php e faço o seguinte:
a) Adicione no início:
b) na Função onSearch mude:
c) na função onReload mude:
Com essas poucas mudanças todas lista padrão irá manter a navegação mesmo que troque de página.
Espero que ajude
PS: Estou postando novamente pois na primeira tentativa deu ruim...
Excelente contribuição.
Segue o agradecimento ao @Fernando Araújo e ao @Marco Driemeyer.
Bastou descompactar o arquivo zip e seguir as instruções para permitir o controle de navegação nas paginações dos grids.
Só completando as instruções, precisei adicionar a seguinte linha no arquivo "libadianticoreAdiantiClassMap.php" para reconhecer a classe do "KeepNavigation":
Um grande abraço para todos os usuários do Adianti.
Onde consigo baixar essa classe?