我在kendo网格中使用kendo MultiSelect作为自定义编辑器, 保存更改时MultiSelect正常工作,但按编辑行按钮时没有显示文本值(MultiSelect为空)。
我的自定义编辑器功能是:
function GRID_MULTISELECT_CUSTOM_EDITOR(container, options) {
var columnValue = String(options.model.POST_HISTORY).replace(/,/g,'","');
$('<input name="GRID_POST_LVL_MULTISELECT" id="GRID_POST_LVL_MULTISELECT" data-value-primitive="true" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoMultiSelect({
filter: "contains",
optionLabel: " ",
width: "100px",
dataTextField: "NAME_UNIT",
dataValueField: "CD_UNIT",
dataSource: prsListDataSource,
value: [columnValue],
change: function(e) {
selectedValue = e.sender.value();
apex.event.trigger($("#PRS_LIST_REG_POST_HISTORY_MULTISELECT"),"kapex-multiselect-change");
apex.event.trigger($("#PRS_LIST_REG_POST_HISTORY_MULTISELECT"),"kapex-multiselect-databound");
}
});
var ms = $("#GRID_MULTISELECT_CUSTOM_EDITOR").data("kendoMultiSelect");
console.log(ms.value());
}
设置了 console.log(ms.value());
显示值,但在MultiSelect小部件中没有显示textvalue。
当数据库中存储1个值时,MultiSelect正常工作,文本值显示在编辑中。但是当sotre多值时,textvalue不显示。
我将数据值以此格式存储在数据库列中作为varchar。
001,100,110,111,112
答案 0 :(得分:1)
我建议您将POST_HISTORY
值序列化为客户端的数组。这将无需在自定义编辑器功能中即时修改模型值。在用户完成编辑行之后,您也不需要考虑如何将MultiSelect的数组值转换回逗号分隔的字符串值。
请记住,在这种情况下,使用MultiSelect声明中的value
配置将不起作用,因为MVVM值绑定在稍后阶段应用并优先。
另一方面,如果您绝对需要将POST_HISTORY
值序列化为逗号分隔的字符串到客户端,请使用dataSource.schema.parse
将这些字符串转换为数组 Grid是数据绑定的:
最后,从<select multiple>
创建MultiSelect小部件,而不是<input>
。