提高 Handsontable 验证响应能力
Posted
技术标签:
【中文标题】提高 Handsontable 验证响应能力【英文标题】:Improving Handsontable validation reponsiveness 【发布时间】:2016-04-03 16:39:32 【问题描述】:如果我在做像 isNumeric 这样的简单检查,响应时间很好,但是一旦我开始做更复杂的事情(检查数据库是否值有效),它很快就会变得太慢而无法使用。 IE。 900 行需要 45 秒,25k 行需要 20 分钟(然后网格会出现问题)
这是我目前正在尝试实施的检查类型的示例:
var BadArray = [];
var GoodArray = [];
isValid = function (value, callback)
var bad = $.grep(BadArray, function (e) return e.Key == value; );
if (bad != null && bad.length === 0)
var good = $.grep(GoodArray, function (e) return e.Key == value; );
if (good != null && good.length === 0)
var errMsg;
var data =
$.ajax(
//ajax call setup here
success: function (response)
if (response == "active")
GoodArray.push(value);
callback(true);
else
BadArray.push( Key: value, RspMsg: response );
errMsg = response;
);
if (errMsg != null)
$("#ValErrors").empty();
$.each(BadArray, function (index, value)
$("#ValErrors").append("Key " + value.Key + ": " + value.RspMsg + "<br />");
);
callback(false);
else
callback(true);
else
callback(false);
;
我还能做些什么来改进这个具体的例子吗? 是否有任何通用提示/技巧来改进 Handsontable 中验证功能的响应时间?
【问题讨论】:
【参考方案1】:好吧,如果您有 900 行,每行 10 列,那就是 9,000 次 ajax 调用!也许您可以做的只是验证使用此方法更改的单元格,当您需要验证所有单元格时,有一个单独的端点来获取整个数据数组,检查每一个,并返回所有未验证单元格的数组.
【讨论】:
有没有办法告诉 Handontable 您希望能够以这种方式进行验证?我还没有看到任何方法可以阻止它单独检查每个单元格。 有,但我找不到它是如何完成的。本质上,您关闭验证 onChange,然后在afterChange
事件中执行 hot.validateCells()
或 hot.validateCell(x,y)
以上是关于提高 Handsontable 验证响应能力的主要内容,如果未能解决你的问题,请参考以下文章