Datatables 使用columns.orderData按不可见数据列对数据表进行排序
对于我的问题,我已经准备好了 在一个文字游戏中,我试图展示一个玩家玩的最长的20个单词 我以JSON格式将数据从PostgreSQL传递到DataTables jQuery插件。它已经按单词长度和播放单词的日期排序 此顺序存储为数值1、2、3、。。。在每个JSON对象的row属性中:Datatables 使用columns.orderData按不可见数据列对数据表进行排序,datatables,Datatables,对于我的问题,我已经准备好了 在一个文字游戏中,我试图展示一个玩家玩的最长的20个单词 我以JSON格式将数据从PostgreSQL传递到DataTables jQuery插件。它已经按单词长度和播放单词的日期排序 此顺序存储为数值1、2、3、。。。在每个JSON对象的row属性中: var dataSet = [ {"row":4,"gid":1,"created":"25.02.2017 14:07","finished":null,"player1":2,"player2":1,"
var dataSet = [
{"row":4,"gid":1,"created":"25.02.2017 14:07","finished":null,"player1":2,"player2":1,"score1":30,"score2":52,"female1":0,"female2":0,"given1":"Abcde3","given2":"Ghijk4","photo1":null,"photo2":null,"place1":null,"place2":null,"word":"ZZ","score":11},
{"row":2,"gid":1,"created":"25.02.2017 14:07","finished":null,"player1":2,"player2":1,"score1":30,"score2":52,"female1":0,"female2":0,"given1":"Abcde3","given2":"Ghijk4","photo1":null,"photo2":null,"place1":null,"place2":null,"word":"BBBBB","score":6},
{"row":3,"gid":1,"created":"25.02.2017 14:07","finished":null,"player1":2,"player2":1,"score1":30,"score2":52,"female1":0,"female2":0,"given1":"Abcde3","given2":"Ghijk4","photo1":null,"photo2":null,"place1":null,"place2":null,"word":"ABC","score":7},
{"row":1,"gid":1,"created":"25.02.2017 14:07","finished":null,"player1":2,"player2":1,"score1":30,"score2":52,"female1":0,"female2":0,"given1":"Abcde3","given2":"Ghijk4","photo1":null,"photo2":null,"place1":null,"place2":null,"word":"XYZXYZXYZ","score":6}
];
下面是我的JavaScript代码,我尝试按不可见列0对列word column 2进行排序:
function renderGid(data, type, row, meta) {
return (type === 'display' ? '<IMG SRC="https://datatables.net/examples/resources/details_open.png"> #' + data : data);
}
function renderGame(data) {
return 'Details for game #' + data.gid;
}
jQuery(document).ready(function($) {
var longestTable = $('#longest').DataTable({
data: dataSet,
order: [[2, 'desc']],
columns: [
{ data: 'row', orderable: false, visible: false },
{ data: 'gid', orderable: false, visible: true, className: 'details-control', render: renderGid },
{ data: 'word', orderable: true, visible: true, orderData: 0 /* order by invisible column 0 */ },
{ data: 'score', orderable: false, visible: true }
]
});
$('#longest tbody').on('click', 'td.details-control', function () {
var img = $(this).find('img');
var tr = $(this).closest('tr');
var row = longestTable.row(tr);
if (row.child.isShown()) {
row.child.hide();
img.attr('src', 'https://datatables.net/examples/resources/details_open.png');
} else {
row.child( renderGame(row.data()) ).show();
img.attr('src', 'https://datatables.net/examples/resources/details_close.png');
}
});
});
但是,这不起作用-显示的单词顺序是ZZ、BBBB、ABC、XYZXYZXYZ,似乎没有排序-而它应该是XYZXYZXYZ、BBBB、ABC、ZZ,按行降序排序:
为什么即使我已经指定了,分拣也不起作用
为什么我不能通过单击上面屏幕截图中红色箭头显示的灰色箭头来更改顺序?好的,这似乎在dataTables jQuery插件中:整数参数不被接受
我必须将其更改为具有单个值的数组:
{ data: 'word', orderable: true, visible: true, orderData: [0] },
然后它就起作用了:
当orderData列数大于0时,它似乎在没有数组的情况下工作。但当为0时,它需要数组[0]