Kendo ui 剑道网格:使用model.set更新必填字段的值会触发验证错误

Kendo ui 剑道网格:使用model.set更新必填字段的值会触发验证错误,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我有一个剑道网格使用自定义弹出编辑器。其中一个字段是使用远程数据源的Kendo dropdownlist 当用户进行选择时,与所选项目关联的数据将用于使用model.set更新弹出编辑器中的两个其他字段 var win = $(this).closest("[data-role=window]"); var uid = win.data("uid"); var input = $("[name='ProductName']", win); // Assign value (anything w

我有一个剑道网格使用自定义弹出编辑器。其中一个字段是使用远程数据源的Kendo dropdownlist

当用户进行选择时,与所选项目关联的数据将用于使用
model.set
更新弹出编辑器中的两个其他字段

var win = $(this).closest("[data-role=window]");
var uid = win.data("uid");
var input = $("[name='ProductName']", win); 
// Assign value (anything works)
input.val("Test Product");
var model = $("#grid").data("kendoGrid").dataSource.getByUid(uid);
model.set('ProductName','Test Product');
这很好:模型和字段都已更新

但是,如果我随后将
required validationMessage=“This field is required”
添加到由
model.set更新的字段中,则会触发验证错误,并且不会更新字段

我已经设置了一个示例来演示这个问题。在这种情况下,可以通过单击“设置产品”
按钮来设置自定义弹出编辑器中的产品名称。您会注意到已触发验证错误,但如果从字段中删除
required
属性,则会正确更新该属性

这是虫子吗?为什么在设置值时会触发验证错误


编辑:只是澄清一下——这是在添加新记录时,而不是在编辑现有记录时。

当您为
ProductName
赋值时,您实际上正在从
输入中失去焦点,这会触发验证,并使它抱怨将其留空

解决方案是首先将值分配给
输入
,然后执行
设置

var win = $(this).closest("[data-role=window]");
var uid = win.data("uid");
var input = $("[name='ProductName']", win); 
// Assign value (anything works)
input.val("Test Product");
var model = $("#grid").data("kendoGrid").dataSource.getByUid(uid);
model.set('ProductName','Test Product');

您的小提琴在此处修改:

你好,Onabai。谢谢你。事实上,我以前就注意到我可以这样做,但我希望这不是必要的,因为我广泛使用了这种技术(并希望避免代码重复)。我仍然不能100%确定为什么会发生这种情况,因为被赋值的输入一开始就没有焦点。无论如何,我想这不会花费太长的时间来通过并添加额外的行。