我正在使用datatables,并且正在使用colReorder,需要保存列的状态而不使用statusave(不允许使用localcache)。但是,我的数据库中确实有一个偏好表,用于以JSON格式存储此类信息。
我看过colReorder.order(),它看起来像我要获得订单所需要的。
到目前为止,我在想的是更改列,调用colReorder.order()并将返回的数组放在我的首选项表中,然后在重新初始化时使用它对表进行重新排序。
所以我的问题/需要帮助的是:在更改colOrder时,我需要保存它们所在的订单并更新我的首选项。我该怎么做呢?我似乎找不到放置colReorder.order()的“位置”。我还没有看到用于数据表的onChange(),甚至无法确定这是否是解决此问题的最佳方法
编辑:David的答案是理想的解决方案,但是由于代码已经存在且懒惰,因此不适用于我的情况。
我发现我的solution/work-around是要字符串化并保存details.mapping从此函数内到我的首选项,并在初始化表时使用colReorder.order(savedArray [],true)。
留给我以防万一有人陷入我所处的境地。
答案 0 :(得分:0)
实际上,DataTables提供了用于向另一个位置存储state
以及从另一个位置检索statesave
的方法。查看stateSaveCallback
和stateLoadCallback
。
但是我的数据库中确实有一个偏好表用于存储 JSON格式的信息
然后,您只需要填写“空白”。假设您有一个名为userId
的服务器端脚本,可以使用唯一的$('#example').DataTable({
stateSave: true,
stateSaveCallback: function(settings, data) {
$.ajax( {
url: 'statesave',
dataType: 'json',
data: {
action: 'set',
userId: aUserId,
state: data
}
})
},
stateLoadCallback: function(settings) {
var state;
$.ajax( {
url: 'statesave',
dataType: 'json',
async: false,
data: {
action: 'get',
userId: aUserId
},
success: function(data) {
state = data
})
})
return state
}
})
通过“设置”和“获取”来存储和检索状态。骨架看起来像这样:
cmake
答案 1 :(得分:0)
听起来您正在使用server-side processing
选项。在这种情况下,您可以将列重排数组添加到sent parameters对象中,然后以这种方式保存。