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