Javascript DataTables API:DataTables可以';由于呈现(在某些元素中插入字符串)而对整数列进行t排序
看起来render函数损害了DataTable对我的一列的排序能力。此列包含所谓的“语料库排名”。语料库排名都是整数,但出于接口目的,我编写了一个渲染函数来检测语料库排名何时超过4000。如果是这样,那么我让render函数将corpus rank条目更改为表示稀有的字符串 这是因为,当有人单击列的标题尝试按语料库列进行排序时,语料库列被视为字符串而不是整数。如果我删除渲染函数,则列实际上被排序为整数而不是字符串Javascript DataTables API:DataTables可以';由于呈现(在某些元素中插入字符串)而对整数列进行t排序,javascript,jquery,sorting,datatable,datatables,Javascript,Jquery,Sorting,Datatable,Datatables,看起来render函数损害了DataTable对我的一列的排序能力。此列包含所谓的“语料库排名”。语料库排名都是整数,但出于接口目的,我编写了一个渲染函数来检测语料库排名何时超过4000。如果是这样,那么我让render函数将corpus rank条目更改为表示稀有的字符串 这是因为,当有人单击列的标题尝试按语料库列进行排序时,语料库列被视为字符串而不是整数。如果我删除渲染函数,则列实际上被排序为整数而不是字符串 columns.push({
columns.push({
"name": $(this).data("fieldname"),
"data": "fields."+$(this).data("fieldname"),
/*"render": function( data, type, full, meta) {
if (data > 4000) {
return "rare";
} else {
return data;
}
},*/
"visible": $(this).data("visible"),
我知道DataTables通常使用列中的数据类型对列进行排序。。。但这是一个既有整数又有字符串的列。我能做些什么来解决这个问题呢?你能再添加一列isRare吗?4000以下的所有级别都保持0,4000以上的所有级别都保持1?这应该可以做到,除非你有其他限制,不允许你有这样一个列。你能再添加一个列吗?4000以下的所有级别都保持0,4000以上的所有级别都保持1?除非您有其他限制,不允许您有这样一个列,否则应该这样做。您可以使用它进行排序和排序 下面是代码示例。我根据上面的代码创建了它:
"data": "fields."+$(this).data("fieldname"),
"render": function( data, type, full, meta) {
if (data > 4000) {
return "rare";
} else {
return data;
}
},
"createdCell": function (td, cellData, rowData, row, col) {
$(td).attr('data-order', cellData);
}
您可以使用它进行排序和排序 下面是代码示例。我根据上面的代码创建了它:
"data": "fields."+$(this).data("fieldname"),
"render": function( data, type, full, meta) {
if (data > 4000) {
return "rare";
} else {
return data;
}
},
"createdCell": function (td, cellData, rowData, row, col) {
$(td).attr('data-order', cellData);
}
您只需要显示字符串“ravel”
,而不是使用它进行排序。查看type
参数,它为您提供了为不同目的返回不同值的机会:
render: function(data, type, full, meta) {
if (type == 'display') {
if (data > 4000) {
return "rare"
}
}
return data
},
现在,仅在表中显示“稀有”,但当对表进行排序或筛选时,将使用原始值。您只需显示字符串“稀有”
,而不需要对其进行排序。查看type
参数,它为您提供了为不同目的返回不同值的机会:
render: function(data, type, full, meta) {
if (type == 'display') {
if (data > 4000) {
return "rare"
}
}
return data
},
现在
“稀有”
仅显示在表中,但当对表进行排序或筛选时,将使用原始值。我过去使用过的一个选项(但可能不是当前常用的方法)是使用ref标记将单元格内容包装在一个范围中,并添加一个比较ref值的自定义排序类型:
$.fn.dataTableExt.oSort['ref-numeric-asc']=函数(a,b){
var x=a?a.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
变量y=b?b.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
x=parseFloat(x);
y=浮动(y);
回报率((xy)?1:0);
};
$.fn.dataTableExt.oSort['ref-numeric-desc']=函数(a,b){
var x=a?a.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
变量y=b?b.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
x=parseFloat(x);
y=浮动(y);
回报率((xy)?-1:0);
};代码>我过去使用过的一个选项(但可能不是当前常用的方法)是使用ref标记将单元格内容包装在一个span中,并添加一个比较ref值的自定义排序类型:
$.fn.dataTableExt.oSort['ref-numeric-asc']=函数(a,b){
var x=a?a.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
变量y=b?b.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
x=parseFloat(x);
y=浮动(y);
回报率((xy)?1:0);
};
$.fn.dataTableExt.oSort['ref-numeric-desc']=函数(a,b){
var x=a?a.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
变量y=b?b.match(/ref=['”]*([0-9\.]+)/)[1]:“0”;
x=parseFloat(x);
y=浮动(y);
回报率((xy)?-1:0);
};代码>这起作用了。这似乎是一个更快的修复方法,但我想知道“类型”到底是什么,以及我如何知道它等于“display”的字符串值。我在查找文档时找不到它,但已经有一段时间了,你能给我什么线索吗?@ByronSmith,“看…”这是一种暗示,让你自己看看这些文档:)下面是所有的类型可能性啊。让我哑口无言。我只是在谷歌上搜索了一下,发现信息很难找到。这很有效。这似乎是一个更快的修复方法,但我想知道“类型”到底是什么,以及我如何知道它等于“display”的字符串值。我在查找文档时找不到它,但已经有一段时间了,你能给我什么线索吗?@ByronSmith,“看…”这是一种暗示,让你自己看看这些文档:)下面是所有的类型可能性啊。让我哑口无言。我只是在谷歌上搜索了一下,但找不到信息。