Datatables首先对具有特定类名的行进行排序
因此,基本上当单击一行时,我会向父TR添加一个类,然后重新绘制表Datatables首先对具有特定类名的行进行排序,datatables,Datatables,因此,基本上当单击一行时,我会向父TR添加一个类,然后重新绘制表 $('#datatables').on( 'click', 'tbody tr:not(".group")', function (e) { if($(this).hasClass('transfer')) { $(this).toggleClass('selected'); } table .order( [ 7, 'asc
$('#datatables').on( 'click', 'tbody tr:not(".group")', function (e) {
if($(this).hasClass('transfer')) {
$(this).toggleClass('selected');
}
table
.order( [ 7, 'asc' ] )
.draw();
if($('tr.selected').length > 0) {
$('#ts_btn').removeClass('hidden');
} else {
$('#ts_btn').addClass('hidden');
}
} );
但是我如何才能让表将所选行放在顶部呢
我试过这个:
"columnDefs": [
{
"targets": [7],
"visible": false,
render: function ( data, type, row ) {
if (type == 'sort') {
return $(row).hasClass('selected') ? 1 : 0;
} else {
return data;
}
}
}
],
但它不起作用
我没有为Datatables使用新行选择的原因是,我使用条形码扫描仪进行读取,并根据选择行的内容进行过滤。(除了单击行)以下是实现此目的的一种方法:
var columnDefs=[
//…其他一些专栏。。。
{
标题:“选定”,
可见:假,
可搜索:false
}
];
var数据集=[
[
//一些数据,,
0
]
// ...
]
myTable=$(“#示例”).DataTable({
订单固定:[
0,//隐藏列的索引
“描述”
],
数据:数据集,
列:columnDefs,
选择:“多个”
});
myTable.on('select.dt deselect.dt',函数(e,dt,type,index){
如果(类型=='行'){
var$rows=myTable.rows(索引);
变量数据=e.type=='选择'?1:0;
$rows.every(函数(索引){
myTable.单元格(索引,6).数据(数据);
});
}
});
工作区:
我特别需要一种方法,不管用户定义的排序如何,都可以首先保留选定的行,但是您可以根据需要更改选择器和事件处理程序。如果您不想添加所有的零,但我找不到一个,那么可能有一种方法可以使它与静态数据一起工作。
此外,这显然无法在服务器端分页时立即实现。以下是实现这一点的一种方法:
var columnDefs=[
//…其他一些专栏。。。
{
标题:“选定”,
可见:假,
可搜索:false
}
];
var数据集=[
[
//一些数据,,
0
]
// ...
]
myTable=$(“#示例”).DataTable({
订单固定:[
0,//隐藏列的索引
“描述”
],
数据:数据集,
列:columnDefs,
选择:“多个”
});
myTable.on('select.dt deselect.dt',函数(e,dt,type,index){
如果(类型=='行'){
var$rows=myTable.rows(索引);
变量数据=e.type=='选择'?1:0;
$rows.every(函数(索引){
myTable.单元格(索引,6).数据(数据);
});
}
});
工作区:
我特别需要一种方法,不管用户定义的排序如何,都可以首先保留选定的行,但是您可以根据需要更改选择器和事件处理程序。如果您不想添加所有的零,但我找不到一个,那么可能有一种方法可以使它与静态数据一起工作。
而且,这显然无法在服务器端分页的情况下立即实现