有没有办法在不使用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将其发送回服务器,然后以某种方式处理返回消息.
祝好运!