【问题标题】:datatables sorting data with mix numbers and letters使用混合数字和字母对数据进行排序的数据表
【发布时间】:2017-10-18 23:29:31
【问题描述】:

用 jsfiddle 更新:https://jsfiddle.net/pnnorhtg/

我有一个数据表,但在初始化“带有 html 的数字”数据表插件 https://datatables.net/plug-ins/sorting/num-html 时遇到了困难。

最初按“计数”DESC 排序。但是,一旦我执行修改html并将其附加到该列中每个单元格的函数,它就不再可排序。

根据我的研究,这个插件应该能够解决这个问题,但我没有运气。

这是我的数据:

var preHtmlData = [{
  Brand: "Toyota",
  Count: 33423,
  GBV: 242445
}, {
  Brand: "Ford",
  Count: 23558,
  GBV: 334343
}, {
  Brand: "Honda",
  Count: 9466,
  GBV: 933455
}];

这是我的函数,它根据键将 html 文本添加到值中:

//adding text next to Count
function updateItemCount(preHtmlData) {
    for(var key in preHtmlData) {
            var value = preHtmlData[key];
            console.log(value)

     if (value.Brand == 'Toyota') {
            value.Count = value.Count + ' <div style="font-size: 10px;margin-top: -5px">Toyota Purchases</div>';
        } else if (value.Brand == 'Ford') {
            value.Count = value.Count + ' <div style="font-size: 10px;margin-top: -5px">Ford Purchases</div>';
        } else if (value.LOB == 'Honda') {
            value.Count = value.Count + ' <div style="font-size: 10px;margin-top: -5px">Honda Purchases</div>';
        }
        }
    }

这就是我初始化表的地方:

 summary_data_table = $('#resultsTable').DataTable({
        "bSort": true,
        "destory": true,
        "data": data,
        "searching": false,
        "paging": false,
        "order": [
            [aryJSONColTable.length - 1, "desc"]
        ],
        "dom": '<"top">t<"bottom"><"clear">',
        "columnDefs": aryJSONColTable,
                [
                 { type: 'natural-nohtml', targets: 5 }
               ]
        "initComplete": function(settings, json) {
            $("#resultsTable").show();
        }
    });

我已经根据文档添加了插件并构建了我的代码,我感觉它是我定义 columnDefs 的一些方式,但我需要它来执行 aryJSONColTable 和自然排序。

【问题讨论】:

  • 错误的"columnDefs": aryJSONColTable,似乎导致了这个问题

标签: javascript sorting datatables


【解决方案1】:

更新

从您的小提琴中可以看出,您可以通过在传递给 columnDefs 的自定义属性中放置一个订单类型(“type”:“natural”)来解决这个问题

customParams = {
  "targets": keys.length - 1,
  "sTitle": "Item Count",
  "type":"natural"
}

请查看更新的小提琴https://jsfiddle.net/pnnorhtg/1/

【讨论】:

  • 感谢您的回复,我已经尝试过了,但排序功能仍然无法正常工作。我应该在 datatables.js 文件之前初始化 natural.js 插件吗?还是那个顺序无关紧要?现在我在 datatables.js 之后调用 natural.js 脚本,但两种方法我都试过了。
  • 能否请您制作 jsfiddle 以便我们更好地帮助您?
  • 这里是一个 jsfiddle jsfiddle.net/pnnorhtg 希望这会有所帮助。另外,如果除了自然排序插件之外还有另一种方法,我想听听
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多