基于网格的列值的Kendo UI网格编辑器

时间:2019-06-20 04:37:04

标签: javascript jquery kendo-ui kendo-grid

我找到了这个article in the Kendo UI documentation,它和我坚持的问题几乎相同。在Dojo中打开后,我将编辑一些代码行,尤其是更改为editable:"inline"模式并为type列创建一个下拉列表。但是似乎代码没有按我预期的那样工作。

任何想法,为什么我从下拉列表中更改值Editortype列都没有反应。如果我先进行更新,然后再编辑回网格,则该方法有效。

Here I provide a Demo due to related situation

感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:1)

它按预期方式工作,如何编码。仅当触发edit event时才调用该列的编辑器。如果您希望编辑器字段根据已经处于编辑模式下的 类型进行动态更改,则必须在类型编辑器上更新kendoDropDownList才能使用{{3 }},然后更改其他编辑器。

function typeEditor(container, options) {
        $('<input id="' + options.field + '" name="type" required dataTextField="type" dataValueField="type" data-bind="value:' + options.field + '"/>')
          .appendTo(container)
          .kendoDropDownList({
            optionLabel: "- Select Type -",
            dataTextField: "settingTypeName", 
            dataValueField:  "settingTypeName", 
            dataSource: settingTypeData,
            change: function(e){
              console.log(this.value());
              //UPDATE EDITOR HERE BASED ON VALUE
              //From your example, value is going to be dropdown, date, string, etc.
            }
        }).data('kendoDropDownList');
}

根据评论进行编辑: 我不确定您的意思是您无法从下拉列表中获取值。上面的代码实际上是将值写入控制台。下一步是选择要更改的元素,将其清空,然后在其中添加新的编辑器。

...
change: function(e){
    switch(this.value()) {
        ...
        case "string":
            $("[data-container-for=editor]").empty()
            $("<input id='editor' name='editor' type='text' class='k-textbox'>")
              .appendTo($("[data-container-for=editor]"));
            break;
        ...
    }
}