Kendo Grid Edit表单 - 在提交时忽略以编程方式更改控制值

时间:2015-03-12 22:06:10

标签: kendo-ui telerik kendo-grid

我正在使用Telerik Kendo UI Professional。我有一个带有编辑模板的网格,上面有几个控件。我遇到了一个奇怪的小要求,我需要以编程方式设置其中一个控件的值,基于另一个控件被更改。价值的实际变化似乎发生得很好。但是,当我提交表单以保存更改时,将忽略新的以编程方式设置的值;它会发送原始值。如果用户自己更改了值,则提交新值就好了。

以下是一个示例:

http://dojo.telerik.com/@wittca/otoxO

这不是我的原始代码,但它显示了同样的问题。在这个版本中,打开编辑弹出窗口,我以编程方式修改UnitsInStock KendoNumericTextBox的值。然后,当我保存表单时,我希望看到新值,但我仍然看到网格中的旧值。因此,它不会采用以编程方式生成的新值。

我的原始代码试图设置KendoComboBox的值,当其他控件之一发生更改时,会发生相同的情况。我没有时间创建完全相同的情况,但最有可能的是,如果我们可以修复dojo示例,同样的修复将适用于我的ComboBox。

2 个答案:

答案 0 :(得分:0)

他是你的解决方案:

如果您更改了以下编辑功能:

 edit: function (e) {
     var units = e.container.find("[name='UnitsInStock']").data("kendoNumericTextBox");
     var unitsValue = units.value();
     units.value(unitsValue+1);
}

到此:

  edit: function (e) {
                         var val = e.model.UnitsInStock; 
                          e.model.set("UnitsInStock", val+ 1); 
                        }

它将为您绑定更新的值。

以下是我测试的更新代码:

http://dojo.telerik.com/OHaKA/2

答案 1 :(得分:0)

以下是Telerik支持的回复:

您还需要触发更改事件,因为Grid会侦听它以更新值。请在此处查看更新的示例:

http://dojo.telerik.com/UjUkE

var units = e.container.find("[name='UnitsInStock']").data("kendoNumericTextBox");
units.value( <insert new value here> );
units.trigger("change");

代码的关键行是最后一行;手动触发控件上的“更改”事件,这会强制网格更新值。

此修复程序也适用于涉及ComboBoxes的原始问题。