无法更新下拉列表 kendo 网格 angular 1 的更改事件中的文本框值

Not able to update text box value in change event of dropdown kendo grid angular 1

在 Ui 上,我以弹出模式打开了 kendo-grid 进行编辑。其中有一个 kendoDropDownList,我已将更改事件绑定到该列表。在更改事件函数中,我想更新同一 kendo 网格中存在的文本框的值。

到目前为止我尝试了什么:

在下拉菜单的编辑器功能中,我可以访问选项,所以我尝试了 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 调试器中的行,也没有在模型中设置值。

即使在调用 set 函数后,

model.TEXT_BOX_FIELD 仍然是空引号。 我无法理解其中的原因。

我也试过像这样在模型中设置值:

model.TEXT_BOX_FIELD = "Hello";

通过这种方式,我可以在调试器中看到该值现在已在模型中设置,但它不会显示在网格的编辑弹出窗口 window 中,尽管它在 kendo-背景中的网格。

但是为了在弹出窗口中显示它 window,我使用 jquery 如下:

$('[name="TEXT_BOX_FIELD"]').val("Hello");

这工作得很好,但我不明白为什么 set 函数不起作用。

我遵循了kendo的文档和如下讨论: 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 在文本框中设置值,如下所示:

$('[name="TEXT_BOX_FIELD"]').val("Hello");

然后我调用模型的 set 函数来设置值,如下所示:

var uid = this.element.closest("[data-role=window]").data("uid");
 var model = $("#Grid").data("kendoGrid").dataSource.getByUid(uid);
 model.set("TEXT_BOX_FIELD","Hello");

这次空验证在调用 model.set() 时没有抛出错误,因为该文本框的值已经由 jQuery val() 函数设置。