有没有办法在 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)模式
答案 0 :(得分:2)
我对此进行了更深入的研究,并且无法在本机支持此批量验证的网格文档中找到任何内容。通常,网格格式旨在逐行处理数据,这反映了关系数据库表/电子表格类型的数据表示。考虑到这一点,典型的插入/编辑/验证/删除操作旨在一次对单个行或记录执行。
我的回答是:不。如果不重复进入和离开需要验证的每个单元格的编辑模式,则无法运行Kendo验证。
如果您可以深入了解Kendo JS库并确切了解如何调用验证,您可以创建一些自定义方法以批量方式调用它。一旦下一个剑道更新出现,这样的事情可能会破裂。
为了加快速度,你可能需要一种聪明的方法来验证数据的输入;或blur
;或使用setTimeout
作为“背景”任务;或者将数据打包并通过Ajax将其发送回服务器,然后以某种方式处理返回消息。