我正在使用Telerik Kendo UI Professional。我有一个带有编辑模板的网格,上面有几个控件。我遇到了一个奇怪的小要求,我需要以编程方式设置其中一个控件的值,基于另一个控件被更改。价值的实际变化似乎发生得很好。但是,当我提交表单以保存更改时,将忽略新的以编程方式设置的值;它会发送原始值。如果用户自己更改了值,则提交新值就好了。
以下是一个示例:
http://dojo.telerik.com/@wittca/otoxO
这不是我的原始代码,但它显示了同样的问题。在这个版本中,打开编辑弹出窗口,我以编程方式修改UnitsInStock KendoNumericTextBox的值。然后,当我保存表单时,我希望看到新值,但我仍然看到网格中的旧值。因此,它不会采用以编程方式生成的新值。
我的原始代码试图设置KendoComboBox的值,当其他控件之一发生更改时,会发生相同的情况。我没有时间创建完全相同的情况,但最有可能的是,如果我们可以修复dojo示例,同样的修复将适用于我的ComboBox。
答案 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);
}
它将为您绑定更新的值。
以下是我测试的更新代码:
答案 1 :(得分:0)
以下是Telerik支持的回复:
您还需要触发更改事件,因为Grid会侦听它以更新值。请在此处查看更新的示例:
var units = e.container.find("[name='UnitsInStock']").data("kendoNumericTextBox");
units.value( <insert new value here> );
units.trigger("change");
代码的关键行是最后一行;手动触发控件上的“更改”事件,这会强制网格更新值。
此修复程序也适用于涉及ComboBoxes的原始问题。