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

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

调用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)模式

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

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

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

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

祝好运!

点赞