网格中的Kendo MultiSelect没有显示默认值

时间:2016-10-01 07:58:41

标签: kendo-ui grid show

我在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

1 个答案:

答案 0 :(得分:1)

我建议您将POST_HISTORY值序列化为客户端的数组。这将无需在自定义编辑器功能中即时修改模型值。在用户完成编辑行之后,您也不需要考虑如何将MultiSelect的数组值转换回逗号分隔的字符串值。

http://dojo.telerik.com/IDUBI

请记住,在这种情况下,使用MultiSelect声明中的value配置将不起作用,因为MVVM值绑定在稍后阶段应用并优先。

另一方面,如果您绝对需要将POST_HISTORY值序列化为逗号分隔的字符串到客户端,请使用dataSource.schema.parse将这些字符串转换为数组 Grid是数据绑定的:

http://dojo.telerik.com/OQAGa

最后,从<select multiple>创建MultiSelect小部件,而不是<input>