Dies ist ein häufiges Problem, aber ich weiß nicht, wie man es mit KendoUI Widgets und Javascript herausfinden. Ich habe ein KendoGrid, dessen Datenquelle von einem AJAX-Aufruf an einen Webservice kommt. Daten sind an die Spalten gebunden. Zwei Spalten (Quelle und Ziel) sind zwei Dropdown-Listen:Rebind DropDownList in KendoGrid, abhängig von Wert in anderen DropDownList in der gleichen Zeile ausgewählt
Jede Spalte ist definiert als
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"
});
}
Und der SourceDropDownEditor ist wie folgt:
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
});
}
Die gleiche ist für die Destination Dropdown-Liste getan.
Nun, was ich will ist, wenn der Benutzer auf die Schaltfläche Bearbeiten klickt (Raster ist mit In-Line-Bearbeitung definiert) und wählen Sie einen bestimmten Quellwert aus der Quelle DDL; Die Liste in der Ziel-DDL muss sich entsprechend diesem Wert ändern.
Ich schrieb eine Funktion zum Abrufen der richtigen Liste, abhängig von dem Wert in der Quelle DDL gewählt. Aber was ich NICHT tun kann, ist die DESTION DLL dieser Zeile zu bekommen und die Datenquelle entsprechend einzustellen.
Details wie gewünscht:
Grid dynamisch erstellt wird:
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
Hier dojo.telerik.com/uXeKa. Es spiegelt im Grunde die Rastervorlage und die Spaltenfelder
ENDLÖSUNG
Endlösung hier: dojo.telerik.com/uXeKa/2. Muss nichts in die Edit Funktion des Grid hinzufügen. Sie müssen nur onChange Funktion der Source-DDL implementieren und die Datenquelle des Ziels festlegen.
Könnten Sie bitte etwas mehr Code zur Verfügung stellen? Ich habe es benötigt, um die folgenden Dinge zu identifizieren, 1. Dropdown wird im normalen Modus oder im Bearbeitungsmodus angezeigt. 2. Wie binden Sie die Datenquelle an die Dropdown-Liste? –
1. Dropdown wird im Bearbeitungsmodus angezeigt. 2. Die Datenquelle "Sources" ist ein statisches Array und wird wie im zweiten Segmentcode beschrieben in das "SourceDDL" eingebunden. Der erste Segmentcode ist Teil der Methode "generateColumns", die in der Grid-Definition beschrieben wird. – alessalessio
Ich beginne wirklich zu glauben, dass es tatsächlich nicht möglich ist, zu erreichen. Da die Datenquelle tatsächlich an die "Spalte" gebunden ist, nicht an das Element in jeder einzelnen Zeile. – alessalessio