我找到了这个article in the Kendo UI documentation,它和我坚持的问题几乎相同。在Dojo中打开后,我将编辑一些代码行,尤其是更改为editable:"inline"
模式并为type
列创建一个下拉列表。但是似乎代码没有按我预期的那样工作。
任何想法,为什么我从下拉列表中更改值Editor
后type
列都没有反应。如果我先进行更新,然后再编辑回网格,则该方法有效。
Here I provide a Demo due to related situation
感谢您的帮助。谢谢
答案 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;
...
}
}