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

时间:2014-04-04 14:42:50

标签: javascript jquery validation kendo-ui kendo-grid

有没有办法在 kendo-grid 的单元格上调用 validate()而不使用 editCell()方法?

调用Telerik团队推荐的验证器的方法如下:

$("myGrid").data("kendoGrid").editable.validatable.validate()

但是,如果没有单元格打开(例如网格中没有聚焦输入),则没有可编辑对象可用,所以我必须通过一个激活单元格一个调用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);
        });

然而,这段代码并不优雅且痛苦地缓慢

我想要实现的是提交时的网格验证

再次

问题:我可以在每个网格单元格上运行kendo验证器,而无需反复进入和退出编辑模式吗?

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

1 个答案:

答案 0 :(得分:2)

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

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

如果您可以深入了解Kendo JS库并确切了解如何调用验证,您可以创建一些自定义方法以批量方式调用它。一旦下一个剑道更新出现,这样的事情可能会破裂。

为了加快速度,你可能需要一种聪明的方法来验证数据的输入;或blur;或使用setTimeout作为“背景”任务;或者将数据打包并通过Ajax将其发送回服务器,然后以某种方式处理返回消息。

祝你好运!