【问题标题】:HandsOnTable manualRowMove not updating the DOMHandsOnTable manualRowMove 不更新 DOM
【发布时间】:2015-09-18 22:02:00
【问题描述】:

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

请告知我做错了什么还是错误。

【问题讨论】:

    标签: handsontable


    【解决方案1】:

    开启 manualRowMove 和移动行不会影响原始数据源。 HOT.getData() 返回的是原始数据源,并不是表的当前状态。

    manualRowMove、manualColMove、columnSorting 等插件只是位于数据层之上的抽象。它们维护handsontable 对象(即sortIndex 属性)的状态,该对象基本上充当从作者所谓的“逻辑索引”到“物理索引”的查找表。在此处阅读更多信息:https://github.com/handsontable/handsontable/wiki/Understanding-column-sorting-plugin

    您似乎正在尝试允许用户对表格的顺序进行排序,然后保存该顺序。您必须滚动自己的函数来遍历表格并使用 getDataAtRow() 之类的方法按表格顺序获取数据。

    【讨论】:

    • 谢谢。但是您是否经历过,如果从 HOT 中添加/删除任何行(contextMenu: ['row_above', 'row_below', 'remove_row']),则 manualRowMove 选项对整个 HOT 不再起作用或行为异常。请检查这个小提琴:jsfiddle.net/bcm3uk62 请告知。
    • 是的,在查看源代码后,我注意到有人忘记添加必要的代码来在行创建或行删除后更新 manualRowPositions 数组。 HandsontableManualColumnsMove 插件实现了必要的功能,但不是 HandsontableManualRowMove 插件。我已经修补了我的本地文件,可能会在 github 上提交一个 pull-request。
    • 因此,在 HOT 团队发布具有此修复程序的新版本之前,目前尚无此问题的解决方案。暂时有什么解决办法请指教。
    【解决方案2】:

    我解决这个问题的方法是使用 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 上工作是边缘犯罪

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-08
      • 2020-11-23
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-09
      • 2015-10-20
      相关资源
      最近更新 更多