Kendo MultiSelect в сетке не показывает значения по умолчанию

#kendo-ui #grid #show

#kendo-пользовательский интерфейс #сетка #показать

Вопрос:

Я использую kendo MultiSelect в качестве пользовательского редактора в kendo grid, 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.

Когда значение 1 сохраняется в базе данных, MultiSelect работает правильно, а textvalue отображается при редактировании. но когда так много значений, текстовое значение не отображается.

Я сохраняю значение данных в этом формате в столбце базы данных как varchar.

001,100,110,111,112

Ответ №1:

Я рекомендую вам сериализовать POST_HISTORY значения в виде массивов для клиента. Это избавит от необходимости изменять значение модели «на лету» в пользовательской функции редактора. Вам также не нужно будет думать, как преобразовать значение массива MultiSelect обратно в строковое значение, разделенное запятыми, после того, как пользователь закончит редактирование строки.

http://dojo.telerik.com/IDUBI

Имейте в виду, что использование value конфигурации в объявлении MultiSelect в этом случае не будет работать, поскольку привязка значения MVVM применяется на более позднем этапе и имеет приоритет.

С другой стороны, если вам абсолютно необходимо сериализовать POST_HISTORY значения в виде строк, разделенных запятыми, для клиента, затем используйте dataSource.schema.parse для преобразования этих строк в массивы до привязки сетки к данным:

http://dojo.telerik.com/OQAGa

Наконец, создайте виджет MultiSelect из <select multiple> , не <input> .

Комментарии:

1. Хорошо, пожалуйста, подумайте о том, чтобы отметить мой ответ как ответ или проголосовать за него.