【发布时间】:2017-12-26 12:15:31
【问题描述】:
在 Ui 上,我在弹出模式下打开了 kendo-grid 进行编辑。其中有一个 kendoDropDownList 我绑定了一个更改事件。在更改事件函数中,我想更新同一剑道网格中存在的文本框的值。
到目前为止我所尝试的:
在下拉菜单的编辑器功能中,我可以访问选项,所以我尝试了options.model.set("TEXT_BOX_FIELD", "Hello");
我也试过这个:
var uid = this.element.closest("[data-role=window]").data("uid");
var model = $("#Grid").data("kendoGrid").dataSource.getByUid(uid);
model.set("TEXT_BOX_FIELD","Hello");
在上述两种方法中,我发现即使控件在 chrome 调试器中通过该行,该值也不会在模型中设置。
model.TEXT_BOX_FIELD 即使在调用 set 函数后仍然是空引号。 我无法理解其中的原因。
我也尝试像这样在模型中设置值:
model.TEXT_BOX_FIELD = "Hello";
通过这种方式,我可以在调试器中看到该值现在已在模型中设置,但它不会显示在网格的编辑弹出窗口中,尽管它在后台的 kendo-grid 中可见。
但是为了在弹出窗口中显示,我使用 jquery 如下:
$('[name="TEXT_BOX_FIELD"]').val("Hello");
这工作得很好,但我不明白为什么 set 函数不起作用。
我已经关注了剑道的文档和讨论如下: https://docs.telerik.com/kendo-ui/controls/data-management/grid/how-to/Editing/access-editor-control
https://www.telerik.com/forums/custom-popup-editor-with-additional-fields
https://www.telerik.com/forums/updating-a-textbox-cell-after-drop-down-selection
我想知道执行此任务的推荐方法。
编辑:
使用return false 进行了验证,这阻止了 set 函数在定义架构时设置值。这是触发的,因为最初文本框的值是空的。所以我删除了验证。现在 set() 函数运行正常,我也可以在 UI 上看到值。
validation : {
requiredCheck : function(input) {
if (input.is("[name='TEXT_BOX_FIELD']") && input.val() == '') {
//alert(input.val())
input.attr("data-textBoxFieldMsg-msg", "Text Box cannot be empty");
return false;
}
return true;
}
}
【问题讨论】:
标签: jquery angularjs telerik kendo-grid