DataTables按属性过滤对象数组,而不是按数组索引过滤

时间:2013-01-04 19:26:07

标签: javascript jquery jquery-datatables

我想创建一个可应用于多个数据表的日期范围过滤器。我遇到的问题是即使我过世了 在我的aaData值作为一个对象数组,当我到达过滤器函数时,它在一个数组中。这不会起作用,因为数组中日期值的索引在我的应用程序中的各种dataTable中是不同的,我宁愿能够通过点名表法在类似的属性上做到这一点。

$.fn.dataTableExt.afnFiltering.push(
        function( oSettings, aData, iDataIndex ) {
            var iMin = document.getElementById('start-datepicker').value;
            var iMax = document.getElementById('end-datepicker').value;

            // Create Minimum Date Object
            var iMinDate = new Date(iMin);

            // Create Maximum Date Object
            var iMaxDate = new Date(iMax);

            // Create Date Column Object
            var iDateStr = aData.date;
            var iDate = new Date(iDateStr);

            if ( iMinDate < iDate && iDate < iMaxDate )
            {
                return true;
            }
            return false;
        }
    );

我的初始化与此http://live.datatables.net/iyavud/7/edit#source

类似

1 个答案:

答案 0 :(得分:1)

这可能是一个黑客,但它似乎通过oSettings.aoData对象和iDataIndex参数获取数据。

$.fn.dataTableExt.afnFiltering.push(
        function( oSettings, aData, iDataIndex ) {
            var iMin = document.getElementById('start-datepicker').value;
            var iMax = document.getElementById('end-datepicker').value;

            // Create Minimum Date Object
            var iMinDate = new Date(iMin);

            // Create Maximum Date Object
            var iMaxDate = new Date(iMax);

            // Create Date Column Object
            var rowData = oSettings.aoData[iDataIndex]._aData;
            var iDateStr = rowData.date;
            var iDate = new Date(iDateStr);

            if ( iMinDate < iDate && iDate < iMaxDate )
            {
                return true;
            }
            return false;
        }
    );