数据表:如何设置选择/突出显示的添加行?
Datatables: how to set added row selected / highligthed?
这不起作用:
var row = testTable.row.add({
"id": result.data.id,
"name": result.data.name,
"description": result.data.description
}).draw();
row.nodes().to$().addClass('selected');
怎么了?
原题只是本题的一部分:
当一行添加到table时,应根据当前table顺序在适当的页面和行(页面/行索引)上添加并突出显示。
虽然客户端处理按预期工作:
https://jsfiddle.net/fegeb01b/23/
jQuery.fn.dataTable.Api.register('page.jumpToData()', function(data, column) {
var pos = this.column(column, {
order: 'current'
}).data().indexOf(data);
if (pos >= 0) {
var page = Math.floor(pos / this.page.info().length);
//alert("pos: " + pos);
this.page(page).draw(false);
}
return this;
});
$(document).ready(function() {
GetNumber.num = 0;
var table = $('#UsersTable').DataTable({
select: {
style: 'single',
info: false
}
});
$('#btn').click(function() {
var GUID = GenGuid();
var name = 'name-' + GetNumber();
var rowAdded = table.row.add([
GUID,
name
]).draw();
table.$('tr.selected').removeClass('selected');
rowAdded.nodes().to$().addClass('selected');
table.page.jumpToData(GUID, 0);
var info = table.page.info();
$('#lbl').text('row ' + "\"" + name + "\"" + ' page(index): ' + info.page + ', row(index): ' + table.$('tr.selected').index());
});
$('#UsersTable tbody').on('click', 'tr', function() {
table.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
});
function GenGuid() {
var d = new Date().getTime();
if (typeof performance !== 'undefined' && typeof performance.now === 'function') {
d += performance.now(); //use high-precision timer if available
}
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
}
function GetNumber() {
return ++GetNumber.num;
}
});
,相同的代码不适用于服务器端处理。
这里描述了解决方案:
这不起作用:
var row = testTable.row.add({
"id": result.data.id,
"name": result.data.name,
"description": result.data.description
}).draw();
row.nodes().to$().addClass('selected');
怎么了?
原题只是本题的一部分:
当一行添加到table时,应根据当前table顺序在适当的页面和行(页面/行索引)上添加并突出显示。
虽然客户端处理按预期工作: https://jsfiddle.net/fegeb01b/23/
jQuery.fn.dataTable.Api.register('page.jumpToData()', function(data, column) {
var pos = this.column(column, {
order: 'current'
}).data().indexOf(data);
if (pos >= 0) {
var page = Math.floor(pos / this.page.info().length);
//alert("pos: " + pos);
this.page(page).draw(false);
}
return this;
});
$(document).ready(function() {
GetNumber.num = 0;
var table = $('#UsersTable').DataTable({
select: {
style: 'single',
info: false
}
});
$('#btn').click(function() {
var GUID = GenGuid();
var name = 'name-' + GetNumber();
var rowAdded = table.row.add([
GUID,
name
]).draw();
table.$('tr.selected').removeClass('selected');
rowAdded.nodes().to$().addClass('selected');
table.page.jumpToData(GUID, 0);
var info = table.page.info();
$('#lbl').text('row ' + "\"" + name + "\"" + ' page(index): ' + info.page + ', row(index): ' + table.$('tr.selected').index());
});
$('#UsersTable tbody').on('click', 'tr', function() {
table.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
});
function GenGuid() {
var d = new Date().getTime();
if (typeof performance !== 'undefined' && typeof performance.now === 'function') {
d += performance.now(); //use high-precision timer if available
}
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
}
function GetNumber() {
return ++GetNumber.num;
}
});
,相同的代码不适用于服务器端处理。
这里描述了解决方案: