Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rockrgo

filtro datatable

Recommended Posts

Boa tarde pessoal estou inserindo um filtro de data na minha tabela (DataTables).

 

Na documentação do datatables encontrei um código para aplicar este filtro porém o filtro sempre me retorna 0 registros.

segue o código.

 

$.fn.dataTableExt.afnFiltering.push(
            function( oSettings, aData, iDataIndex ) {
                var iFini = document.getElementById('dateStart').value;
                var iFfin = document.getElementById('dateEnd').value;
                var iStartDateCol = 2;
                var iEndDateCol = 2;

    iFini=iFini.substring(6,10) + iFini.substring(3,5)+ iFini.substring(0,2);
    iFfin=iFfin.substring(6,10) + iFfin.substring(3,5)+ iFfin.substring(0,2);       
    var datofini=aData[iStartDateCol].substring(6,10) + aData[iStartDateCol].substring(3,5)+ aData[iStartDateCol].substring(0,2);
    var datoffin=aData[iEndDateCol].substring(6,10) + aData[iEndDateCol].substring(3,5)+ aData[iEndDateCol].substring(0,2);


                if ( iFini == "" && iFfin == "" )
                {
                    return true;
                }
                else if ( iFini <= datofini && iFfin == "")
                {
                    return true;
                }
                else if ( iFfin >= datoffin && iFini == "")
                {
                    return true;
                }
                else if (iFini <= datofini && iFfin >= datoffin)
                {
                    return true;
                }
                return false;
            }
        );

alterei esta parte para poder adequar ao padrão dd/mm/yyyy

substring(6,10) + iFini.substring(3,5)+ iFini.substring(0,2)

 

este é o código que executa o filtro ao inserir a data no input

$('#dateStart').change( function() { oTable.fnDraw(); } );
$('#dateEnd').change( function() { oTable.fnDraw(); } );

 

já vasculhei diversos exemplos e fóruns do próprio datatable, e sempre seguem este exemplo, mas o mesmo não está funcionando de forma alguma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido pessoal,

 

o problema estava aqui

var iStartDateCol = 2;
var iEndDateCol = 2;

como minha coluna que possui a data para filtrar era a segunda coluna, eu atribuí o valor 2 para as duas variáveis, porém a contagem das colunas pelo dataTables aparentemente começa do 0, só tive que substituir o valor 2 por 1.

var iStartDateCol = 1;
var iEndDateCol = 1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal,

 

hj transferi o sistema para o servidor web e este filtro está dando o seguinte erro no js.

Uncaught TypeError: Cannot read property 'oFeatures' of null jquery.dataTables.js:1591
    fnReDraw jquery.dataTables.js:1591
    fnDraw jquery.dataTables.js:5558
    (anonymous function) VM1164:109
    jQuery.event.dispatch jquery-1.9.1.js:3074
    elemData.handle jquery-1.9.1.js:2751

E no meu servidor local da rodando normal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal descobri o erro mas não estou conseguindo resolver. O problema está no seguinte código:

$('#dateStart').change( function() { oTable.fnDraw(); } );
$('#dateEnd').change( function() { oTable.fnDraw(); } );

o erro ocorre porque não está conseguindo acessar o .fnDraw() através de oTable que é iniciado anteriormente no seguinte código:

var oTable = $('.tabela-visitas').dataTable( {
                    "bJQueryUI": true,
                    "bPaginate": true,
                    "sPaginationType": "full_numbers",
                    "bLengthChange": true,
                    "bFilter": true,
                    "bSort": true,
                    "bInfo": false,
                    "bAutoWidth": true,
                    "aoColumns":[   null,
                                    { "sType": "date-uk" },
                                    null,
                                    null,
                                    null,
                                    null,
                                    null,
                                    null  
                                ],
                    "oLanguage": {
                                    "sLengthMenu": "Mostrar _MENU_ registros por página",
                                    "sZeroRecords": "Nenhum registro encontrado.",
                                    "sInfo": "Mostrando _START_ até _END_ de _TOTAL_ registros",
                                    "sInfoEmpty": "Mostrando 0 até 0 de 0 registros",
                                    "sSearch": "Pesquisar",
                                    "sInfoFiltered": "(filtered from _MAX_ total records)",
                                    "oPaginate": {
                                                    "sFirst":    "Primeiro",
                                                    "sPrevious": "Anterior",
                                                    "sNext":     "Próximo",
                                                    "sLast":     "Último"
                                                 }
                                  }                    
            } );

 

fiz o seguinte teste:

$('#dateStart').change( function() { $('.tabela-visitas').dataTable().fnDraw(); } );
$('#dateEnd').change( function() { $('.tabela-visitas').dataTable().fnDraw(); } );

e assim o filtro funciona, porém ele está reiniciando a tabela a cada evento change e minha tabela fica sem as configurações declaradas acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi,

 

Eu nunca usei esse plugin, por isso não respondi nada nesse tópico.

Estou dando uma olhada na documentação, para entender como ele funciona.

 

Só uma dica, que não resolve o problema, mas é parte da sintaxe do javascript.

No lugar de:

$('#dateStart').change( function() { oTable.fnDraw(); } );
vc pode fazer:
$('#dateStart').change( oTable.fnDraw );
sem os (), ai não precisa da função anônima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

cara valeu a dica, desta forma o código fica mais limpo.

 

Fui testando varias formas e funções para tentar resolver meu problema e nenhuma funcionou......aí desfiz todas as alterações e deixei o código anterior que acusava o erro.....e do nada parou de dar o erro e resolveu funcionar....vai entender...isso é coisa do além!!rsrs

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.