Kendo UI,如何在Kendo网格单元格上手动调用validate()

szt*_*pen 5 javascript validation jquery kendo-ui kendo-grid

有没有一种方法可以在不使用editCell()方法的情况下在kendo-grid的单元上调用validate()

Telerik小组建议的调用验证器的方法如下:

$("myGrid").data("kendoGrid").editable.validatable.validate()
Run Code Online (Sandbox Code Playgroud)

但是,如果没有打开的单元格(例如,网格中没有集中的输入),则没有可编辑的对象可用,因此我必须逐个激活单元格以调用validate()

我想在每个网格单元上调用验证并运行一些逻辑(例如addClass()

如果我jquery遍历网格中的所有td元素并调用validate(),则成功,如下所示:

    $(".k-grid-content td").each(function () {
            var cell = $(this);
            grid.editCell(cell);
            if (!grid.editable.validatable.validate()) {
                cell.addClass("cell-invalid");                 
            };
            grid.closeCell(cell);
        });
Run Code Online (Sandbox Code Playgroud)

但是,这段代码并不优雅,而且运行缓慢

我正在尝试实现的是提交时的网格验证。

问题再次声明:我可以运行在每个网格单元剑道验证,无需反复进入和离开编辑模式?

PS:我正在使用批处理编辑(incell)模式

jwa*_*980 3

我对此进行了更深入的研究,但无法在网格文档中找到任何本地支持此批量验证的内容。一般来说,网格格式旨在逐行处理数据,这反映了关系数据库表/电子表格类型的数据表示。考虑到这一点,典型的插入/编辑/验证/删除操作旨在一次对单行或记录执行。

我的回答是:不。如果不重复进入和离开每个需要验证的单元格的编辑模式,则无法运行 Kendo 验证。

如果您可以深入研究 Kendo JS 库并弄清楚如何调用验证,并创建一些自定义方法以批量方式调用它,您也许能够做到。一旦下一个 Kendo 更新发布,类似的事情可能会崩溃。

为了使其更快,您可能必须想出一种巧妙的方法来验证输入的数据;或 上blur; 或作为“后台”任务使用setTimeout; 或者打包数据并通过 Ajax 将其发送回服务器,然后以某种方式处理返回消息。

祝你好运!