数据表colReorder保存而没有状态保存

时间:2018-09-06 13:49:41

标签: javascript html datatables

我正在使用datatables,并且正在使用colReorder,需要保存列的状态而不使用statusave(不允许使用localcache)。但是,我的数据库中确实有一个偏好表,用于以JSON格式存储此类信息。

我看过colReorder.order(),它看起来像我要获得订单所需要的。

到目前为止,我在想的是更改列,调用colReorder.order()并将返回的数组放在我的首选项表中,然后在重新初始化时使用它对表进行重新排序。

所以我的问题/需要帮助的是:在更改colOrder时,我需要保存它们所在的订单并更新我的首选项。我该怎么做呢?我似乎找不到放置colReorder.order()的“位置”。我还没有看到用于数据表的onChange(),甚至无法确定这是否是解决此问题的最佳方法

编辑:David的答案是理想的解决方案,但是由于代码已经存在且懒惰,因此不适用于我的情况。

我发现我的solution/work-around是要字符串化并保存details.mapping从此函数内到我的首选项,并在初始化表时使用colReorder.order(savedArray [],true)。

留给我以防万一有人陷入我所处的境地。

2 个答案:

答案 0 :(得分:0)

实际上,DataTables提供了用于向另一个位置存储state以及从另一个位置检索statesave的方法。查看stateSaveCallbackstateLoadCallback

  

但是我的数据库中确实有一个偏好表用于存储   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对象中,然后以这种方式保存。