manualRowMove在视觉上运行良好,但底层的dom没有得到更新。在manualRowMove之后,HOT.getData()显示旧的数据序列,而不是行交换后的最新序列。
请告知我的错误或错误。
答案 0 :(得分:1)
启用manualRowMove并移动行不会影响原始数据源。 HOT.getData()返回原始数据源,这不是表的当前状态。
manualRowMove,manualColMove,columnSorting等插件只是位于数据层顶部的抽象。它们在handsontable对象(即sortIndex属性)上维护状态,该对象基本上充当了作者调用的查找表"逻辑索引"到"物理指数"。在此处阅读更多相关信息:https://github.com/handsontable/handsontable/wiki/Understanding-column-sorting-plugin
您似乎正在尝试允许用户对表的顺序进行排序,然后保存该顺序。您必须滚动自己的func来遍历表并使用getDataAtRow()等方法按表顺序获取数据。
答案 1 :(得分:0)
我解决这个问题的方法是使用PHP脚本将新订单推送到服务器上的数据库(需要有一些< />交换逻辑,在PHP版本中并不容易,但是它是可行的),理论上你可以回忆起网格并“刷新”它,但我觉得没必要。显然,我的数据库中的原始json按顺序列出
afterRowMove: function (oldIndex, newIndex){
$.post('../ajax/partsOrder.php?id=212&new_parts_order=' + newIndex + '&old_parts_order=' + oldIndex, function(data) {
var msg = '';
if (data.err!=0 || data.url==0) {
msg = 'Error: ' + data.err;
}
else {
msg = 'Success: ' + data.msg;
}
console.log('partsOrder.php says: '+msg);
},"json");
}
PS:我认为这是来自handontable的主要遗漏,我没有留下深刻的印象,getData()并不仅仅代表gui。事实上,如果没有这个,他们甚至可以在gui上工作,这是一个临界犯罪。