Javascript JQuery数据表:按数据排序
如何按传递给数据的值而不是自定义呈现内容对列进行排序 我所做的 我使用jquery数据表来显示数据。从服务器到客户端,我只传递数字数据。在客户端,我使用自定义呈现函数创建表内容:Javascript JQuery数据表:按数据排序,javascript,jquery,datatables,Javascript,Jquery,Datatables,如何按传递给数据的值而不是自定义呈现内容对列进行排序 我所做的 我使用jquery数据表来显示数据。从服务器到客户端,我只传递数字数据。在客户端,我使用自定义呈现函数创建表内容: { "targets": [9], "visible": true, "searchable": true, "render": function(data, type, row) { if (row[9] == -2) { return '';
{
"targets": [9],
"visible": true,
"searchable": true,
"render": function(data, type, row) {
if (row[9] == -2) {
return '';
}
if (row[9] == -1) {
return '<img width="20px" src="/~home/www/images/loader.gif" />';
}
var result = row[9];
if (row[10] > 0) {
result += '<strong><span class="text-success">';
result += '(+' + row[10] + ')';
result += '</span></strong>';
}
if (row[10] < 0) {
result += '<strong><span class="text-danger">';
result += '(' + row[10] + ')';
result += '</span></strong>';
}
return result;
},
},
{
"targets": [10, 11],
"visible": false,
"searchable": false,
},
{
“目标”:[9],
“可见”:真实,
“可搜索”:正确,
“渲染”:函数(数据、类型、行){
如果(第[9]行==-2){
返回“”;
}
如果(第[9]行==-1){
返回“”;
}
var结果=第[9]行;
如果(第[10]行>0){
结果+='';
结果+='(+'+行[10]+')';
结果+='';
}
如果(第[10]行<0){
结果+='';
结果+='('+行[10]+')';
结果+='';
}
返回结果;
},
},
{
“目标”:[10,11],
“可见”:假,
“可搜索”:错误,
},
即使第9、10和11列也只包含数值。根据提供的JS函数生成的字符串值,将第9列排序为字符串
如何指示datatables按原始“行[9]”排序,但将自定义呈现的内容保留在单元格中?您可以将原始数据包装在不可见标记中,并将其附加到输出中,如下所示:
if (row[9] == -2) {
return '<span style="display:none"></span>';
}
if (row[9] == -1) {
return '<span style="display:none">'+ row[9] +'</span><img width="20px" src="/~home/www/images/loader.gif" />';
}
var result = '<span style="display:none">'+ row[9] +'</span>' + row[9];
if(第[9]行)=-2行){
返回“”;
}
如果(第[9]行==-1){
返回“”+行[9]+“”;
}
var结果=“”+行[9]+“”+行[9];
所以,行将按数据排序,隐藏在span
中
"render": function(data, type, row) {
^^^^
类型的目的是能够为不同的操作返回不同的值。默认情况下,类型可以是'filter'
,'display'
或'sort'
。在所有情况下,您都会返回希望在列中显示的内容,因此会根据渲染内容进行alpha排序,而不是根据数据值进行数字排序。仅当请求类型为“显示”时才返回不同的标记字符串,否则返回原始数据:
{
"targets": [9],
"visible": true,
"searchable": true,
"render": function(data, type, row) {
if (type == 'display') {
if (row[9] == -2) {
return '';
}
if (row[9] == -1) {
return '<img width="20px" src="/~home/www/images/loader.gif" />';
}
var result = row[9];
if (row[10] > 0) {
result += '<strong><span class="text-success">';
result += '(+' + row[10] + ')';
result += '</span></strong>';
}
if (row[10] < 0) {
result += '<strong><span class="text-danger">';
result += '(' + row[10] + ')';
result += '</span></strong>';
}
return result;
} else {
return data
}
}
}
{
“目标”:[9],
“可见”:真实,
“可搜索”:正确,
“渲染”:函数(数据、类型、行){
如果(类型==“显示”){
如果(第[9]行==-2){
返回“”;
}
如果(第[9]行==-1){
返回“”;
}
var结果=第[9]行;
如果(第[10]行>0){
结果+='';
结果+='(+'+行[10]+')';
结果+='';
}
如果(第[10]行<0){
结果+='';
结果+='('+行[10]+')';
结果+='';
}
返回结果;
}否则{
返回数据
}
}
}