提高 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 验证响应能力的主要内容,如果未能解决你的问题,请参考以下文章

验证数据 jQuery Handsontable 输入

handsontable如何如何启用验证器

Handsontable - 输入验证,限制为包括小数点在内的数字

如何使用 CSS 将视频向右移动 - 以提高响应能力?

使用 datetimepicker 进行操作

Handsontable - 慢粘贴