Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery Datatables:单击另一列时对一列进行排序。_Javascript_Jquery_Sorting_Datatable_Jquery Datatables - Fatal编程技术网

Javascript jQuery Datatables:单击另一列时对一列进行排序。

Javascript jQuery Datatables:单击另一列时对一列进行排序。,javascript,jquery,sorting,datatable,jquery-datatables,Javascript,Jquery,Sorting,Datatable,Jquery Datatables,我有一个带有日期和时间列的jQuery数据表: Date Time Note 1/2/2015 10:02:03 Test 1/4/2915 02:12:32 Test 1/3/2015 02:05:03 Test 3/2/2015 11:02:03 Test 1/4/2015 01:02:13 Test 我想实现一个时间排序。按时排序时,我们首先需要按日期排序,然后按时间排序: Date T

我有一个带有日期和时间列的jQuery数据表:

Date        Time        Note
1/2/2015    10:02:03    Test
1/4/2915    02:12:32    Test
1/3/2015    02:05:03    Test
3/2/2015    11:02:03    Test
1/4/2015    01:02:13    Test
我想实现一个时间排序。按时排序时,我们首先需要按日期排序,然后按时间排序:

Date        Time        Note
1/2/2015    10:02:03    Test
1/3/2015    02:05:03    Test
1/4/2015    01:02:13    Test
1/4/2915    02:12:32    Test
3/2/2015    11:02:03    Test
我有以下代码:

//jQuery datatable code
{ mData: 'date', sTitle: 'Date', sClass: "dtDate" },
{ mData: 'time', sTitle: 'Time', sClass: "dtTime", sType: "time-date-sort"},
{ mData: 'notes', sTitle: 'Notes' },
// More code...

jQuery.fn.dataTableExt.oSort['time-date-sort-asc'] = function(startTime, endTime) {      
    //Date and time sorts go here
    return sortedVal;
};

jQuery.fn.dataTableExt.oSort['time-date-sort-desc'] = function (startTime, endTime) {
    //Date and time sorts go here
    return sortedVal;
};

我可以使用此工具按时间排序,但如何首先按日期排序我正在尝试找出如何获取表行中日期值的引用(与该行中的时间值关联)。例如,如何为时间为
10:02:03
的行获取日期对象
1/2/2015
它看起来不像我可以向oSort函数添加自定义参数。我是使用
jQuery.fn.dataTableExt.oSort
还是
jQuery.fn.dataTableExt.afensortdata
是更好的选择

要从自定义排序中包含的其他列中获取值,必须创建自定义数据源排序插件。下面将以日期+时间字符串的形式返回第0列和第1列中的值,即
1/2/2015 10:02:03

$.fn.dataTable.ext.order['order-time-date-sort'] = function(settings, col) {
    return this.api().row({order:'index'} ).nodes().map(function (tr, i) {
        return $('td:eq(0)', tr).text()+' '+$('td:eq(1)', tr).text();
    });    
}
然后将上述时间列的
订单日期时间排序
设置为
订单日期类型

var table = $('#example').DataTable({
    columnDefs : [
        { type: 'time-date-sort', 
          orderDataType: "order-time-date-sort", 
          targets: [1] 
        }
    ]                                     
});
现在,也可以使用简单的
date.parse()
,根据日期对时间进行排序:

演示->


注意:如果您的性能有问题,可能会出现在一个巨大的表中,您应该“缓存”订单时间日期排序的结果(只需将结果存储在一个变量中)。你也可以考虑使用完全不同的方法-< /P>
jQuery.fn.dataTableExt.oSort['time-date-sort-pre'] = function(value) {      
    return Date.parse(value);
};
jQuery.fn.dataTableExt.oSort['time-date-sort-asc'] = function(a,b) {      
    return a-b;
};
jQuery.fn.dataTableExt.oSort['time-date-sort-desc'] = function(a,b) {
    return b-a;
};