Kendo ui 剑道网格:使用model.set更新必填字段的值会触发验证错误
我有一个剑道网格使用自定义弹出编辑器。其中一个字段是使用远程数据源的Kendo dropdownlist 当用户进行选择时,与所选项目关联的数据将用于使用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
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%确定为什么会发生这种情况,因为被赋值的输入一开始就没有焦点。无论如何,我想这不会花费太长的时间来通过并添加额外的行。