2

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

$.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

4

1 回答 1

1

这可能是一个 hack,但它似乎可以通过 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;
        }
    );
于 2013-01-04T20:06:37.963 回答