我有一個DataTable,可以有N個可隨時添加/刪除/重新創建的子數據表。我希望孩子們分享初始化參數,但似乎DataTables會影響原始數據結構。受排序影響的數據表共享參數
當添加兩個孩子並對第一個孩子進行排序時,第二個孩子將在重新創建時繼承排序。我已經在這裏創造一個小提琴:http://jsfiddle.net/wthY9/44/
var myDataTable;
var index = 0;
var parentParams = {
"order":[],
"columns":[
{"name":"Col 1"},
{"name":"Col 2"},
{"name":"Col 3"},
{"name":"Col 4"},
],
};
var childParams = {
"columns":[
{"name":"Col 1"},
{"name":"Col 2"},
{"name":"Col 3"},
],
"order":[],
};
$(document).ready(function(){
myDataTable = $('#myTable').DataTable(parentParams);
$('#createChild').click(function(e){
e.preventDefault();
if(typeof myDataTable.row(index).child() == "undefined"){
var $table = $($('#child_table').html());
$table.css('width','100%');
var newChildParams = $.extend({}, childParams);
var childTable = $table.DataTable(newChildParams);
myDataTable.row(index).child(
childTable.table().container()
);
}
myDataTable.row(index).child.show();
index++;
});
- $('#recreateChild').click(function(e){
e.preventDefault();
var lastIndex = index - 1;
var $table = $($('#child_table').html());
$table.css('width','100%');
var childTable = $table.DataTable(childParams);
myDataTable.row(lastIndex).child(
childTable.table().container()
);
myDataTable.row(lastIndex).child.show();
});
$('#hideChild').click(function(e){
myDataTable.row(--index).child.hide();
});
});
步驟:
- 添加兩個孩子
- 排序的第一個孩子在任何一列
- 重新創建第二個孩子與重新創建按鈕
- 二子繼承了順序(調試顯示默認的childParameters現在有排序集而不是空數組)。
我該如何重新創建孩子併爲正在重新創建的孩子保留排序順序?
編輯:由於一直沒有回答,也沒有評論我已經把這個問題發佈到DataTables forum。
啊,當然。因此,如果我想在重新創建表時保留排序順序,則必須將設置對象存儲在某個映射或數組中,以便能夠重新設置順序參數。你會建議什麼? – span
我會用淺拷貝的數組,參見[demo here](http://jsfiddle.net/wthY9/46/)。我添加了'ChildOptionsArray',你可以搜索這個關鍵字來查看一些差異。 – North
真棒,謝謝:) – span