從 1.9 版升級至 DataTables 1.10

如同所有 1.x 版本的 DataTables,向下相容性是升級的主要目標。我們希望 DataTables 能簡單地融入您目前的網站,讓您能以最少的麻煩獲得新功能的好處。DataTables 的最新版本始終可以從下載頁面下載。

雖然大多數升級應該非常順利,但從 1.9 或更早版本升級 DataTables 到 1.10 時,仍有一些要點必須考慮(請參閱先前的更新說明以了解較早版本)。

建立 DataTables / API 存取

現在可以使用以下方式建立 DataTable:

  • $(...).dataTable(),或
  • $(...).DataTable()

兩者的差異在於,第一個會回傳一個 jQuery 物件,而第二個會回傳一個 DataTables API 實例

舊的 API(以 fn 開頭的方法)仍然可以在 DataTables 1.10 中使用,以確保向下相容性,它們像以前一樣附加到 jQuery 物件上,但新的 API 得到了顯著改進,我鼓勵您嘗試使用它!

分頁

DataTables 1.10 顯著升級了 DataTables 的分頁控制項(請參閱pagingType),其結果是舊的內建 two_button 分頁形式已被移除。

如果您正在使用 two_button 分頁控制項,並希望繼續使用(而不是使用 1.10 中的 simple 選項,它提供了相同的按鈕,但按鈕的類別名稱更一致),則可使用整合檔案。只需在載入 DataTables 之後,但在初始化您的表格之前,將此檔案包含在您的文件中,two_button 分頁將恢復為與 1.9 中完全相同的狀態(包括類別名稱等)。

伺服器端處理

為了與 DataTables 中選項和 API 的 camelCase 變更保持一致,伺服器端處理參數也已更新為更現代的形式(有關完整資訊,請參閱文件)。此變更是可選的,並且僅在有條件地啟用,以確保完全的向下相容性。

  • $.fn.dataTable.ext.legacy.ajax 可用於強制使用哪種模式。設為 false 以使用現代架構,或設為 true 以使用 1.9- 架構。預設值為 null 以進行自動偵測。
  • DataTables 將根據是否使用 ajaxsAjaxSource 來初始化表格,自動決定使用哪種形式的參數
    • ajax - 將使用現代架構
    • sAjaxSource - 將使用舊架構。

因此,如果您只是更新 DataTables 而不變更任何參數,則無需變更伺服器端腳本。

API 外掛程式

如果您正在使用任何 API 外掛程式,它們可能需要針對 1.10 進行更新,因為一些內部函式已變更 - 其中一些函式可能已被外掛程式使用。

本網站上的可用外掛程式都已更新,可以與 DataTables 1.10 正確運作,如果您正在使用這些外掛程式,它們將會直接導入。

已移除的功能

上述改進是透過移除 DataTables 1.9- 的三個功能而實現的,這些功能在 1.9 中已棄用,並計劃在 1.10 中移除。

fnRender

舊的 fnRender 選項提供了一種在建立儲存格時操作儲存格的方法。但是,它提供的參數清單令人困惑,並且在內部需要 DataTables 中的特定結構,這會導致效能問題。移除 fnRender 顯著提高了具有大型資料集的 DataTables 的效能,並且能夠將物件實例作為資料來源物件提供給 DataTables(例如 Knockout 可觀察物件)。

為了取代 fnRender,可使用columns.rendercolumns.createdCell 選項,它們提供了更大的靈活性和更一致的介面。

bScrollInfinite

DataTables 1.9 透過 bScrollInfinite 選項顯示無限滾動網格的內建功能已被移除,因為它在 API 中導致不一致。移除也大幅簡化了內部程式碼。

為了取代 bScrollInfinite,建議使用 DataTables 的Scroller 擴充功能。

基於 Cookie 的狀態儲存

在 DataTables 1.10 中,基於 Cookie 的狀態儲存已被基於 localStorage 的狀態儲存取代。Cookie 由於其 4KiB 的限制而非常有限,並且由於它們是每個 HTTP 請求的一部分,因此會產生效能損失。localStorage 速度更快且更具彈性,並且在 DataTables 1.10 中用作狀態資訊的預設儲存方式。

IE6/7 中無法使用 localStorage。因此,DataTables 的內建狀態儲存功能在這些瀏覽器中不可用,在這些瀏覽器中,狀態儲存將會靜默失敗。如果您希望使用 Cookie,可以使用 stateLoadCallbackstateSaveCallback 參數來提供適當的函式。

相關文件

本文檔包含有關升級到 1.10 的一般資訊,有關個別主題的更詳細資訊,請參閱以下文件

其他問題?

如果您在升級過程中遇到任何其他問題,請在論壇中告知我,以便可以根據需要解決或完整記錄。