Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DataTables API:DataTables可以';由于呈现(在某些元素中插入字符串)而对整数列进行t排序_Javascript_Jquery_Sorting_Datatable_Datatables - Fatal编程技术网

Javascript DataTables API:DataTables可以';由于呈现(在某些元素中插入字符串)而对整数列进行t排序

Javascript DataTables API:DataTables可以';由于呈现(在某些元素中插入字符串)而对整数列进行t排序,javascript,jquery,sorting,datatable,datatables,Javascript,Jquery,Sorting,Datatable,Datatables,看起来render函数损害了DataTable对我的一列的排序能力。此列包含所谓的“语料库排名”。语料库排名都是整数,但出于接口目的,我编写了一个渲染函数来检测语料库排名何时超过4000。如果是这样,那么我让render函数将corpus rank条目更改为表示稀有的字符串 这是因为,当有人单击列的标题尝试按语料库列进行排序时,语料库列被视为字符串而不是整数。如果我删除渲染函数,则列实际上被排序为整数而不是字符串 columns.push({

看起来render函数损害了DataTable对我的一列的排序能力。此列包含所谓的“语料库排名”。语料库排名都是整数,但出于接口目的,我编写了一个渲染函数来检测语料库排名何时超过4000。如果是这样,那么我让render函数将corpus rank条目更改为表示稀有的字符串

这是因为,当有人单击列的标题尝试按语料库列进行排序时,语料库列被视为字符串而不是整数。如果我删除渲染函数,则列实际上被排序为整数而不是字符串

                     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,“看…”这是一种暗示,让你自己看看这些文档:)下面是所有的
类型
可能性啊。让我哑口无言。我只是在谷歌上搜索了一下,但找不到信息。