【问题标题】:Handsontable conflict between validating and sorting验证和排序之间的冲突
【发布时间】:2016-02-28 14:35:57
【问题描述】:

在我的 Handsontable 中,我希望用户能够按验证失败的行进行排序。我在数据集的开头添加了一个空白列,并且在 aftervalidate 挂钩中,我将此字段设置为 1 用于失败的行。

afterValidate: function (isValid, value, row, prop, source) {
    if (!isValid) hot.setDataAtCell(hot.sortIndex[row][0], 0, "1");
    else if (source=="edit") hot.setDataAtCell(hot.sortIndex[row][0], 0, "");
},
columnSorting: true,
afterColumnSort: function (column, order) {
    hot.validateCells(function (valid) {});
}

我遇到了一个奇怪的问题,它并不总是标记正确的行。正如您在这个小提琴中看到的那样,如果您重复对列进行排序,则在每第三次排序时,错误标志与无效行不匹配,并且在控制台中有一个“未捕获的类型错误:无法读取未定义的属性 '0'” .

https://jsfiddle.net/dk9d1aqr/3/

此外,如果您尝试将表格设置为开始排序,验证将完全失败:

//validation works with this
columnSorting: true,
//validation fails with this
columnSorting: {column: 2, sortOrder: true},

关于如何使验证和排序协同工作的任何想法?

【问题讨论】:

  • 顺便说一句,我知道我的 afterValidate 函数中有一个错误,如果您尝试验证多个列...如果有人知道一种检查无效单元格的好方法,我将不胜感激行(和整个表)

标签: jquery validation sorting handsontable


【解决方案1】:

我的问题是我误读了 sortIndex 方法。它应该传递已排序的行号并从基础数据集中返回物理行号(从我尝试使用它的方式倒退)。

我必须实现 untranslateRow 函数来返回我需要的值。 http://jsfiddle.net/dk9d1aqr/4/

似乎当您单击标题进行排序时,它会在升序、降序和未排序之间旋转(此处引发错误)。我添加了一个 return row; 替代路径,它解决了 Uncaught TypeError。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2014-02-15
    • 2011-02-03
    相关资源
    最近更新 更多