HA
Limpar filtro em datagrid
Pessoal, vi diversos posts no forum perguntando como limpar o filtro de um datagrid e recarregar a listagem depois.
Há casos em que foi realizado apenas limpeza dos campos sem recarregar o datagrid, e outros em que houve muita alteração nos métodos onSearch, onReload.
Contudo há uma maneira bem simples, apenas setando o método onClear na classe de Listagem.
Adicione o botão no formulário:
Depois o método:
Primeiro pega-se todos os campos do formulário, e faz um foreach. De modo simples, setamos os valores dos campos do formulário na sessão de forma dinâmica, pegando pelo activeRecord, concatenando com o filter e nome do campo. Desse modo podemos reaproveitar esse código para todas as classes.
Espero que ajude!
Há casos em que foi realizado apenas limpeza dos campos sem recarregar o datagrid, e outros em que houve muita alteração nos métodos onSearch, onReload.
Contudo há uma maneira bem simples, apenas setando o método onClear na classe de Listagem.
Adicione o botão no formulário:
- <?php
- $this->form->addQuickAction(_t('Clean'), new TAction(array($this, 'onClear')), 'fa:eraser red');
- ?>
Depois o método:
- <?php
- public function onClear($param)
- {
- $fields = $this->form->getFields();
- foreach($fields as $field) {
- TSession::setValue($this->activeRecord.'_filter_'.$field->getName(), NULL);
- TSession::setValue($this->activeRecord.'_filter_data', NULL);
- }
- $this->form->clear();
- $this->onReload();
- }
- ?>
Primeiro pega-se todos os campos do formulário, e faz um foreach. De modo simples, setamos os valores dos campos do formulário na sessão de forma dinâmica, pegando pelo activeRecord, concatenando com o filter e nome do campo. Desse modo podemos reaproveitar esse código para todas as classes.
Espero que ajude!
Excelente!
Boa noite Henrique, ainda em 2021 pegando essa dica Excelente e aplicando em meus sistemas.
O único que funciona como tem que ser e simples de aplicar. Deveria já vir no Adianti essa função para Grid.
Parabéns irmão!
Olá,
Implementei este trecho de código na minha página da datagrid porém o filtro ainda continua preenchido e não consigo resolver.
Alguém tem alguma outra solução para a limpeza dos filtros?
Grato