数据表的排序会重置我的日期范围搜索

时间:2018-06-14 07:23:21

标签: jquery datatable

所以我的数据表中有一个日期列,它有一个使用日期范围而不是日期选择器构建的自定义过滤器。

$('#idOfTheDateRangePicker').on('apply.daterangepicker',                 
    function(ev, picker) {

        var start_date = picker.startDate.format('DD.MM.YYYY');
        var end_date = picker.endDate.format('DD.MM.YYYY');

        var position = $(this).attr('position');

        var min_date = createDate(start_date);
        var max_date = createDate(end_date);

        var filter = function(settings, data, index) {
            var data_date = createDate(data[position]);

            if(data_date >= min_date && data_date <= max_date) {
                return true;
            } else {
                return false;
            }

        };

        $.fn.dataTable.ext.search.push(filter);
        var table = $('#thisTableId').DataTable();
        table.draw();


    $.fn.dataTable.ext.search.splice($.fn.dataTable.ext.search.indexOf(filter, 1));

});

此过滤器适用于返回日期在给定日期范围内的行。

问题是,当我点击列标题上的排序功能时,它将重置日期范围过滤器并显示所有行。然而,排序不会破坏我的所有非范围自定义过滤器,例如使用select或datepicker过滤,将单个值传递给表列搜索。

如何设置它,以便即使单击排序按钮,上面的日期范围过滤器仍会应用于表格?

1 个答案:

答案 0 :(得分:1)

工作演示:http://jsfiddle.net/thecreativedev/7895nv2b/

const tabs = createBottomTabNavigator({
    Home: {
        screen: HomeComponent,
        path: '/',
        navigationOptions: {
            tabBarIcon: ({ focused, tintColor }) => {
                const iconName = `ios-information-circle${focused ? '' : '-outline'}`;
                return <Ionicons name={iconName} size={25} color={tintColor} />;
            },
        },
    },
    // ...
});