Это обычная проблема, но я не знаю, как это понять с помощью виджетов KendoUI и Javascript. У меня есть KendoGrid, источник данных которого исходит от вызова AJAX к веб-службам. Данные привязаны к столбцам. Два столбца (Источник и назначение) - это два раскрывающихся списка:
Каждый столбец определяется как
if (stringStartsWith(colTitle, 'Source')) {
columns.push({
field: dataItem.replace(/\s+/g, ''),
title: colTitle,
width: 150,
locked: false,
editor: sourceDropDownEditor,
//template: "#=SourcetankIdentifier#",
attributes: { style: "text-align: left" },
type: "text"
});
}
И SourceDropDownEditor выглядит следующим образом:
function sourceDropDownEditor(container, options) {
$('<input id="sourcesDropDownList" required data-text-field="Source" data-value-field="Source" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
dataTextField: "Source",
dataValueField: "Source",
dataSource: Sources
});
}
То же самое делается для выпадающего списка Destination.
Теперь я хочу, когда пользователь нажимает кнопку "Изменить" (Grid определяется с помощью In-Line Edit) и выбирает определенное исходное значение из исходного DDL; список в DDL назначения должен измениться в соответствии с этим значением.
Я написал функцию для получения правильного списка, в зависимости от значения, выбранного в Source DDL. Но то, что я НЕ МОЖЕТ, заключается в том, чтобы получить DLL Destination of THAT и соответствующим образом установить Datasource.
Подробнее по запросу:
Сетка построена динамически:
function generateGrid(JSONData) {
var model = generateModel(JSONData, selectedMenu);
var columns = generateColumns(model);
var data = generateData(gridData, columns);
var grid = $("#mainGrid").kendoGrid({
edit: function (e) {
..
},
dataSource: {
data: data,
schema: {
model: model
},
sort: {
field: defaultSort.replace(/\s+/g, ''),
dir: "desc"
}
},
toolbar: [
..
],
columns: columns,
editable: "inline",
sortable: true,
resizable: true,
filterable: true,
selectable: "multiple",
cancel: function(e) {
$('#mainGrid').data('kendoGrid').dataSource.cancelChanges();
},
KENDO DOJO
Здесь dojo.telerik.com/uXeKa. Он отражает в основном шаблон сетки и поля столбца
ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ
Окончательное решение находится здесь: dojo.telerik.com/uXeKa/2. Не нужно ничего добавлять в функцию "Редактировать" сетки. Просто нужно реализовать функцию onChange источника DDL и установить источник данных адресата.