Filtro Refinado Valor Inicial

Tenho a necessidade de iniciar o Grid com uma faixa de valores do Filtro Refinado já selecionado.

Tenho uma tabela de movimentação com dados desde 1997, gostaria de iniciar o Filtro Refinado já setado com os 3 últimos ano, caso o operador queira liberar todos os anos, ele clicaria no X.

Existe esta possibilidade?

Também preciso de algo assim. Se alguém souber, por favor, nos diga.

Entendo perfeitamente sua necessidade.

Já tentei, e ainda não consegui.

Se iniciarmos a consulta com um where inicial, o filtro refinado limita seus valores a esses where inicial, não permitindo cancelar o filtro.

Segue dica para NM, quando usamos a macro sc_select_where(add) que o filtro traga os valores filtrados inicialmente mas com a opção de limpar os filtros.

1 Curtida

Resolvi utilizando a função javascript nm_proc_int_search();

  • O jeito mais fácil de usar ela é clicando com botão direito no link do filtro e clica em inspecionar.
  • Vai aparecer uma tag <a href="javascript:nm_proc_int_search(...)">
  • Você copia a função nm_proc_int_search() com todos os parametros.
  • Executa no onRecord, tendo o cuidado que ela seja executada só uma vez.
3 Curtidas

@scriptcase isso é mais que uma sugestão é uma necessidade. Tantos anos e nenhuma solução ainda ?

Ótima dica Felipe.

Consegui da forma que você explicou. E simulando o clique no filtro, com a função emularCliqueCheckbox faz o seguinte:

  1. Encontra o checkbox na página usando seu id.
  2. Emula um clique no checkbox (chama o método .click()).
  3. Executa a função nm_proc_int_search, que é chamada quando o checkbox é clicado, com os parâmetros especificados no código original.

Ou seja, a função simula o comportamento de clicar no checkbox e executar o código associado a esse clique.

Exemplo do meu elemento html:

<input class="scAppDivToolbarInput" style="margin:0px" type="checkbox" onclick="nm_proc_int_search('chbx', 'tx','Realizado','financeiro_movimento_realizado','id_int_search_financeiro_movimento_realizado','financeiro_movimento_realizado', '', 'N')" id="id_int_search_financeiro_movimento_realizado_7b8b965ad4bca0e41ab51de7b31363a1" name="int_search_financeiro_movimento_realizado[]" value="n##@@Não">

CODIGO JS:

function emularCliqueCheckbox() {
var checkbox = document.getElementById('id_int_search_financeiro_movimento_realizado_7b8b965ad4bca0e41ab51de7b31363a1');

if (checkbox) {
    // Emula o clique
    checkbox.click();
}

}

No meu contexto eu chamo a esse função em um botão JS da grid, para mim faz sentido pq quero aplicar vários filtros com uma única ação do usuário. Pegando name e value:

function emularClquesCheckboxes() {
    // Array de objetos com name e value dos checkboxes
    var checkboxConditions = [
        {name: 'int_search_financeiro_movimento_realizado[]', value: 'n##@@Não'},
        {name: 'int_search_financeiro_movimento_tipo_financeiro_id[]', value: '2##@@Despesa'},
        {name: 'int_search_financeiro_movimento_ent_sai[]', value: 's##@@Saída'}
    ];

    // Itera sobre as condições (name e value)
    checkboxConditions.forEach(function(condition) {
        // Pega todos os checkboxes com o name especificado
        var checkboxes = document.getElementsByName(condition.name);

        // Para cada checkbox, verifica se o value corresponde e emula o clique
        checkboxes.forEach(function(checkbox) {
            if (checkbox.value === condition.value) {
                checkbox.click();
            }
        });
    });


}