如何使用备用值对 JavaScript 数据表进行排序?

阿里

我的 DataTable 中有一个列,它的值 (int) 更改 (str) 取决于它的值。它的初始值为 0 - 1,并根据其值将其更改为负值、正值或中性值以提供该值的上下文。

在这样做之前,我的桌子看起来像这样

Ratio     Item
---------------
0.2       Apple
0.5       Banana
0.8       Pear
0.4       Orange

但是在使用 Jinja/Flask 进行一些 HTML 侧转换后,我的表格显示如下:

Ratio       Item
-----------------
Negative    Apple
Neutral     Banana
Positive    Pear
Negative    Orange

但我仍然想对仍然可以在 HTML 中访问的原始浮点值进行排序

我的 HTML 代码:

<td>
  {%if submission['ratio'] >= 0.75 %}
    <span>Positive</span>
  {% elif submission['ratio'] >= 0.5 %}
    <span>Neutral</span>
  {% else %}
    <span>Negative</span>
  {% endif %}
</td>

有没有什么我可以像自定义标签一样坚持在跨度中进行排序的东西,文档对此不太清楚。

IE

<span data-sort="{{ submission['ratio'] }}">Positive</span>
叶夫根·戈尔邦科夫

您不应该翻译您的浮点值服务器端,您可以使它们显示为“负-中性-正”用户端,同时保持初始数据可用于处理(排序)。

为了使您的浮动显示为“负-中性-正”,您可能需要使用createdCell选项。要让该列仍可按原始浮点值排序,您可以为其分配自定义数据type,稍后将使用这些数据

$('table').DataTable({
    ...
    columnDefs: [{
            targets: 0,
            type: 'negneutpos',
            createdCell: (td, data) => td.outerHTML = `<td data-sort="${data}">${data < 0.5 ? 'Negative' : data > 0.75 ? 'Positive' : 'Neutral'}</td>`
        }
    ]
});

然后,您可以为您的特定类型“negneutpos”实现自定义排序方法:

Object.assign($.fn.DataTable.ext.oSort, {
  'negneutpos-desc' : (a, b) => b - a,
  'negneutpos-asc' : (a, b) => a - b,
});

您可能会在下面找到完整的演示:

$('table').DataTable({
  dom: 't',
  columnDefs: [{
    targets: 0, 
    createdCell: (td, data) => td.outerHTML = `<td data-sort="${data}">${data < 0.5 ? 'Negative' : data > 0.75 ? 'Positive' : 'Neutral'}</td>`,
    type: 'negneutpos'  
  }]
});

Object.assign($.fn.DataTable.ext.oSort, {
  'negneutpos-desc' : (a, b) => b - a,
  'negneutpos-asc' : (a, b) => a - b,
});
<!doctype html>
<html>
<head>
  <script type="application/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script type="application/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
</head>
<body>
<table>
	<thead>
		<tr>
			<th>Ratio</th>
			<th>Item</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>0.2</td><td>Apple</td>
		</tr>
		<tr>
			<td>0.5</td><td>Banana</td>
		</tr>
		<tr>
			<td>0.8</td><td>Pear</td>
		</tr>
		<tr>
			<td>0.4</td><td>Orange</td>
		</tr>
	</tbody>
</table>
</body>
</html>

ps请注意,data-sort在这种情况下,您甚至不需要额外的属性 ()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对仅在数据表中具有数字的列进行排序?

如何禁用仅对数据表中的特定列进行排序?

按特定值顺序对数据表进行排序

如何以编程方式对priming数据表进行排序

通过使用Iqueryable进行数据表排序

javascript-如何使用jQuery将数据表的2列相乘并求和?-数据表

如何对数据表中的重复测量值进行排序?

Laravel:如何在数据表中使用Ajax对数据进行排序?

如何在数据表中一次对两列进行排序

如何按降序对数据表框架进行排序

如何按特定属性对JSON进行排序,以将其显示在角度数据表中

使用特定字段对数据表进行排序

如何对数据表中的容量列进行排序

如何基于多个列对prime-ui数据表进行排序

如何在数据表中进行自定义日期排序?

如何禁用数据表默认排序?

如何在数据表中进行自定义排序?

如何对我的数据表进行排序

根据列中的值对数据表进行排序

如何使用jQuery对数据表进行数字排序

在 Laravel 5.3 上使用数据表对数据进行排序

数据表,如何让一列用图标对另一列进行排序?

使用 datatable.name 对数据集中的数据表进行排序

使用 JQuery 数据表进行自定义排序

c# - 如何按大小写顺序对数据表进行排序#

如何禁用对数据表中的列进行排序

数据表按自定义值对列进行排序

通过拖动行使用jquery对数据表中的数据进行排序(行重新排序)

如何按字符串值中的天数对数据表进行排序