row-reorder
自:RowReorder 1.0.0 起
使用者已重新排序了列。
請注意 - 這個屬性需要 DataTables 的 RowReorder 擴充功能。
描述
當使用 RowReorder 時,您可能希望知道使用者何時重新排序了表格,以便您可以更新資料儲存庫以反映這些變更。此事件提供了這種能力。
RowReorder 所變更的資料以兩種不同的形式在事件處理回呼的參數中給出 - 一個包含關於個別列的詳細資訊,另一個包含適合 Editor 多列編輯功能的格式的資料。
當列被放下時觸發此事件,但在新資料寫入資料庫之前。
從 RowReorder 1.4.1 開始,此事件可以通過從事件處理函數返回 false
來取消。如果有多个事件處理器,則在所有事件處理器按順序執行後,將使用最後一個非 undefined
的返回值作為返回值。
請注意,與所有 DataTables 發出的事件一樣,此事件是使用 dt
命名空間觸發的。因此,要監聽此事件,您還必須使用 dt
命名空間,只需將 .dt
附加到您的事件名稱,或使用 on()
方法監聽將自動附加此命名空間的事件。
類型
function function( e, details, edit )
- 參數
名稱 類型 選用 1 e
否 jQuery 事件物件
2 details
否 受影響的列的變更物件陣列。每個物件都包含以下屬性
Any
newData
- 列的新資料值(由rowReorder.dataSrc
定義的資料點)node
node
-tr
元素integer
newPosition
- 在 DOM 中的新索引Any
oldData
- 列的舊資料值integer
oldPosition
- 在 DOM 中的舊索引
3 edit
否 此參數提供 Editor 執行多列編輯所需的信息
string
dataSrc
- 資料點 - 通常是要編輯的欄位(由rowReorder.dataSrc
定義)array
nodes
- 要編輯的列object
values
- 適合multiSet()
的格式的新值。DataTable.Api
triggerRow
(自 v1.1.0 起) - 用於開始重新排序的列的列 API 實例(即來自row()
的結果)。object
originalEvent
(自 v1.2.6 起) - 觸發重新排序的原始事件 (mouseup)。
範例
將類別新增到所有變更的列
var table = new DataTable('#myTable', {
rowReorder: true
});
table.on('row-reorder', function (e, diff, edit) {
for (var i = 0, ien = diff.length; i < ien; i++) {
$(diff[i].node).addClass('reordered');
}
});
使用 Editor 的多列編輯在列重新排序時更新資料庫
table.on('row-reorder', function (e, details, changes) {
editor
.edit(changes.nodes, false, {
submit: 'changed'
})
.multiSet(changes.dataSrc, changes.values)
.submit();
});