DataTables 1.10.12
排序对我的https://nodejs.org/api/modules.html#modules_caching实施不起作用。我使用延迟加载数据。
如何进行分类?
var hash_table = $('#hash_table');
var data_table = hash_table.DataTable({
processing: true,
serverSide: true,
deferLoading: 100,
ordering: true,
order: [[ 0, 'asc' ]],
ajax: {
url: 'get_hashes/',
type: 'POST',
},
columns: [
{'title': 'BRC ID', 'data': 'brc_id'},
{'title': 'HASH', 'data': 'hash'}
],
dom: 'Brtip',
buttons: [
{
extend: 'excel',
title: 'report',
text: 'Export',
extension: '.xlsx'
}
]
});
data_table.draw();
如果我点击列标题中的排序图标,结果就不会改变。
截图: DataTables
答案 0 :(得分:1)
尝试在按钮元素之后添加这个,我使用它来对我们的数据表进行排序,数据表使用javascript覆盖数据库排序
"aaSorting": [ [1,'desc'], [2,'desc'], [0,'desc'] ],
答案 1 :(得分:0)
对于延迟的DataTables,必须在服务器端执行排序。
Datatables插件仅将指令发送到服务器,通知排序顺序(asc, desc
)和要排序的列的索引。 datatables protocol为此定义了两个特殊键:order[i][dir]
和order[i][column]
。
下面是一个Python函数示例,它找到用户单击和排序顺序的列的名称:
def get_sortable_coll_name(message):
colls = {
'1': 'date',
'3': 'project',
'4': 'project_id',
'5': 'total_matches',
'6': 'successful_matches',
'7': 'failed_matches',
'8': 'status'
}
if message['order[0][dir]'] == 'asc':
return '-' + colls[message['order[0][column]']]
else:
return colls[message['order[0][column]']]
然后,您可以在从Django模型中获取对象时进行排序:
sortable_coll = get_sortable_coll_name(message)
objects = Model.objects.filter(task=task).order_by(sortable_coll)