【问题标题】:In DataTable, how to sort a column by partial value?在 DataTable 中,如何按部分值对列进行排序?
【发布时间】:2015-09-17 01:46:54
【问题描述】:

我正在使用 DataTables,一个用于 jQuery 的表格插件,作为我网页设计的工具。但是我遇到了一个问题,因为我想按部分值对列进行排序。 例如,有一列名为“Speaker”,其值为“Prof. Lin”、“Dr. Yu”、“Prof. Chen”等。对列进行排序时,顺序为:

1.《余博士》
2.《陈教授》
3.《林教授》。

我想按他们的名字而不是第一个字母排序,这意味着排序为:

1.《陈教授》
2.《林教授》
3.《于博士》。

另一个示例是列“平均值(5% 偏差)”,其值为“78.0 (-2.5~2.5)”、“90.5 (-1.5~1.5)”、“130.0 (-3.0~3.0)”等。对列进行排序时,顺序为:

1.“130.0(-3.0~3.0)”
2.“78.0(-2.5~2.5)”
3.“90.5(-1.5~1.5)”。

我想按它们的平均值而不是第一个字母排序(DataTable 认为列值是字符串而不是浮点数),这意味着排序为:

1.“78.0(-2.5~2.5)”
2.“90.5(-1.5~1.5)”
3.“130.0 (-3.0~3.0)”。


在我的数据库中,有两列存储数据,如“title”和“forst_name”、“average”和“bias”。因此,很容易将<td></td> 标记中的两个部分分开。
是否可以使用 DataTables 按部分值对列进行排序?

【问题讨论】:

标签: jquery datatable


【解决方案1】:

我为Title 排序做了一个sample code。您可以为Average 列完成其余的工作。

标记

<table id="report">
    <thead>
        <tr>
            <th>Title</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Dr. Yu</td>
        </tr>
        <tr>
            <td>Prof. Chen</td>
        </tr>
        <tr>
            <td>Prof. Lin</td>
        </tr>
    </tbody>
</table>

JavaScript/jQuery

​​>
$(document).ready(function () {
    function getValue(titleValue) {
        return titleValue.replace(/^Prof\.\s+|^Dr\.\s+/g, '');
    }

    jQuery.fn.dataTableExt.oSort['title-asc'] = function (a, b) {
        var x = getValue(a);
        var y = getValue(b);
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    };

    jQuery.fn.dataTableExt.oSort['title-desc'] = function (a, b) {
        var x = getValue(a);
        var y = getValue(b);
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    };

    $('#report').dataTable({"aoColumns": [
            { "sType": "title" }
        ]});
});

感谢this post

【讨论】:

  • 非常感谢!!我为平均数据列编写了另一个函数: function getValue(averageValue) { return parseFloat(averageValue.substring(0, averageValue.indexOf('('))); }
猜你喜欢
  • 1970-01-01
  • 2013-04-24
  • 2021-10-12
  • 2020-12-22
  • 2020-08-17
  • 1970-01-01
  • 2021-09-01
  • 2023-04-06
  • 1970-01-01
相关资源
最近更新 更多