排序外掛

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 中的快取資料,因此排序可以在具有使用者輸入資訊的欄上發生。