HandsOnTable manualRowMove不更新DOM

时间:2014-12-17 08:44:02

标签: handsontable

manualRowMove在视觉上运行良好,但底层的dom没有得到更新。在manualRowMove之后,HOT.getData()显示旧的数据序列,而不是行交换后的最新序列。

请告知我的错误或错误。

2 个答案:

答案 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上工作,这是一个临界犯罪。