在我的Handsontable中,我希望允许用户能够根据验证失败的行进行排序。我在数据集的开头添加了一个空列,并且在售后验证钩子中,对于失败的行,我将这个字段设置为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) {});
}我遇到了一个奇怪的问题,它并不总是标记正确的行。正如您在这个小提琴中所看到的,如果您多次对列进行排序,那么在每第三种排序中,错误标志与无效的行不匹配,并且控制台中有一个"Uncaught : can read属性'0‘的未定义“。
https://jsfiddle.net/dk9d1aqr/3/
此外,如果尝试将表设置为开始排序,则验证将完全失败:
//validation works with this
columnSorting: true,
//validation fails with this
columnSorting: {column: 2, sortOrder: true},对于如何使验证和排序一起工作,有什么想法吗?
发布于 2015-11-27 17:44:56
我的问题是我误读了sortIndex方法。它应该传递已排序的行号,并从基础数据集中返回物理行号(从我试图使用它的方式向后看)。
我必须实现untranslateRow函数才能返回所需的值。http://jsfiddle.net/dk9d1aqr/4/
当您单击标题排序时,它似乎在升序、降序和未排序之间旋转(在这里抛出错误)。我添加了一条return row;备用路径,解决了未实现的TypeError问题。
https://stackoverflow.com/questions/33922696
复制相似问题