排序插件

DataTables 提供了两个 API 用于对表格中的信息进行排序

  • 基于类型的排序
  • 自定义数据源排序

在这两种类型中迄今为止最常用的是“基于类型的排序”,如果您刚开始使用 DataTables,那么您最有可能想要使用这种排序。

基于类型的排序

主要的 DataTables 包含针对字符串、日期、数字和货币数据执行排序的函数,但您很可能希望按照某种其他方式对数据执行排序,例如内置的数据格式。以下排序函数提供了多种可与 DataTables 一起使用的不同排序方法。

还值得注意的是,排序函数与类型检测插件紧密配合,并且以下许多排序插件都具有对应的类型检测函数,可非常轻松地进行安装,我们强烈建议采用此方法。

如何使用

要添加通过以下插件函数对特定数据类型执行排序的能力,您需要将该插件的代码包含在可用于您页面的 JavaScript 中 - 然后,如果您使用合适的类型检测插件,新的排序将自动应用,如果您没有可用的类型检测插件,可能需要针对目标列使用columns.type参数。

浏览器

直接在浏览器中加载排序插件仅仅是加载插件的 JavaScript(在您加载主要的 DataTables JavaScript 之后)。例如,以下代码使用已保存到文件中的anti-the插件

<script type="text/javascript" src="jquery.dataTables.js"></script>
<script type="text/javascript" src="dataTables.antiThe.js"></script>
<script type="text/javascript">
    var table = new DataTable('#myTable', {
        columnDefs: [
            {
                target: 0,
                type: 'anti-the',
            },
        ],
    });
</script>

可以在我们的 CDN 上获得可以包含在浏览器中的插件。请参阅每个插件的详细信息页面,了解完整的 CDN URL。

ES 模块

排序插件还可作为 ES 模块使用,可以从datatables.net-plugins程序包.mjs文件)中加载。您需要包含插件所需的文件。以下再次使用anti-the的示例

import DataTable from 'datatables.net';
import 'datatables.net-plugins/sorting/anti-the.mjs';

var table = new DataTable('#myTable', {
    columnDefs: [
        {
            target: 0,
            type: 'anti-the',
        },
    ],
});

CommonJS

如果您正在使用CommonJS(即在 Node 或 Webpack 的旧版本中),则可以加载.js文件,它将自动将插件添加到 DataTables。与 DataTables 内核和扩展一样,CommonJS 加载程序提供了一个函数,您需要使用 window$/jQuery 对象调用该函数 - 例如

var $ = require('jquery');
var DataTable = require('datatables.net')(window, $);
require('datatables.net-plugins/sorting/anti-the.js')(window, $);

插件

自定义数据源排序

自定义数据源排序插件允许完全控制要排序的数据。通常,这用于在对表进行排序之前从 DOM 中实时检索数据,以对可由最终用户或其他某个脚本更新的数据进行排序。

您还可以将基于类型的排序与自定义数据源排序结合起来,因为自定义数据源排序插件返回的数据的处理方式与自动检索的数据完全相同。

请注意,自定义数据源排序插件通常会查询 DOM 以获取信息,这可能会降低性能。因此,如果您能够使用基于类型的排序 (参见上文) 或正交数据,建议您这样做。

如何使用

要使用以下自定义数据源排序插件,您只需在加载 DataTables 库后,但初始化 DataTable 之前,将插件的代码包含在页面可用的 JavaScript 中。您还需要为该列指定columns.orderDataType参数,以告诉它要使用哪个插件函数。

以下示例显示了多个自定义数据源插件的用法,以及它与columns.type结合使用的情况 (实时示例)

<script type="text/javascript" src="jquery.dataTables.js"></script>
<script type="text/javascript" src="dataTables.dataSourcePlugins.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('#example').dataTable( {
            "columns": [
                null,
                null,
                { "orderDataType": "dom-text" },
                { "orderDataType": "dom-text", "type": "numeric" },
                { "orderDataType": "dom-select" },
                { "orderDataType": "dom-checkbox" }
            ]
        } );
    } );
</script>

插件

自定义数据源函数用于更新 DataTables 中的缓存数据,以便可以对带有用户输入信息的列进行排序。