#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 обратно в строковое значение, разделенное запятыми, после того, как пользователь закончит редактирование строки.
Имейте в виду, что использование value
конфигурации в объявлении MultiSelect в этом случае не будет работать, поскольку привязка значения MVVM применяется на более позднем этапе и имеет приоритет.
С другой стороны, если вам абсолютно необходимо сериализовать POST_HISTORY
значения в виде строк, разделенных запятыми, для клиента, затем используйте dataSource.schema.parse
для преобразования этих строк в массивы до привязки сетки к данным:
Наконец, создайте виджет MultiSelect из <select multiple>
, не <input>
.
Комментарии:
1. Хорошо, пожалуйста, подумайте о том, чтобы отметить мой ответ как ответ или проголосовать за него.