Фильтрация по диапазону дат в задаче поиска данных - PullRequest
0 голосов
/ 23 апреля 2019

Я использую фильтр диапазона дат в таблицах данных, при отображении даты столбца в формате ГГГГ-ММ-ДД фильтр работает отлично, но мне нужно отобразить столбец в формате ДД-ММ-ГГГГ, поэтому я применилмомент.

функция обратного вызова, использующая момент в datatable:

{ targets : [8], 

render : function (data, type, row) {
   return  moment(data).format('DD/MM/YYYY')
}
},

В результате я вижу следующий день, отображаемый в столбцах.изображение ниже.Я хотел бы отфильтровать по дате, и столбцы должны быть упорядочены в следующем формате: ДД / ММ / ГГГГ

search datepicker ясно, я выбираю день 10 в фильтре DatePicker, и он отображает день11 на столе.

    $(document).ready(function(){

    $.fn.dataTable.ext.search.push(
        function (settings, data, dataIndex) {
            var fecha_inicio = $('#fecha_inicio').datepicker("getDate");
            // alert(fecha_inicio);
            var fecha_fin = $('#fecha_fin').datepicker("getDate");
             var arr =  data[8].split('/').reverse().join('-');
             // alert(arr);
             // var temp = arr[0] +'-'+ arr[1] +'-'+arr[2]; 

             var startDate = new Date(arr);
             startDate.setHours(0,0,0,0);
              // alert(startDate);


            if (fecha_inicio == null && fecha_fin == null)      { return true;}
            if (fecha_inicio == null && startDate <= fecha_fin) { return true;}
            if(fecha_fin == null && startDate >= fecha_inicio)  { return true;}
            if (startDate <= fecha_fin && startDate >= fecha_inicio) { return true;}
            return false;
        }
    );

correct filter by date range

Если я выну код обратного вызова, столбец будет отображаться правильно, кроме формата даты.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 апреля 2019

может быть, вы хотите использовать type параметр ,, например

render:function(data,type,row,meta){
    if(type=='display'){
        return moment(data).format('DD/MM/YYYY');
    }
    if(type=='filter'){
        //there is an example, show how to work, you can use whatever you want time format
        return moment(data).format('YYYY/MM/DD');
    }
     if(type=='sort'){
        //maybe there is timestamp format 
        return data;
    }
    return data;
}

, для более подробной информации проверьте https://datatables.net/reference/option/columns.render function render( data, type, row, meta ) часть

...