Questo è un problema comune, ma non so come capirlo con i widget KendoUI e Javascript. Ho un KendoGrid la cui origine dati proviene da una chiamata AJAX a un servizio Web. I dati sono associati alle colonne. Due colonne (origine e destinazione) sono due elenchi a discesa:Rebind DropDownList in KendoGrid, a seconda del valore selezionato in altri DropDownList sulla stessa riga
Ogni colonna è definito come
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"
});
}
E il SourceDropDownEditor è la seguente:
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
});
}
Lo stesso è fatto per l'elenco a discesa di destinazione.
Ora, ciò che voglio è, quando l'utente fa clic sul pulsante Modifica (la griglia è definita con In-Line Edit) e sceglie un determinato valore sorgente dal DDL di origine; l'elenco nel DDL di destinazione deve cambiare in base a questo valore.
Ho scritto una funzione per recuperare l'elenco corretto, a seconda del valore scelto nel DDL di origine. Ma ciò che NON POSSO fare, è quello di ottenere la DLL Destion di quella riga e impostare l'origine dati di conseguenza.
Maggiori dettagli come richiesto:
griglia è costruito in modo dinamico:
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
Qui dojo.telerik.com/uXeKa. Essa riflette fondamentalmente il modello di rete e campi colonna
soluzione finale
soluzione finale è qui: dojo.telerik.com/uXeKa/2. Non è necessario aggiungere nulla nella funzione Modifica della griglia. È sufficiente implementare la funzione onChange del DDL di origine e impostare l'origine dati della destinazione.
Potrebbe fornire qualche altro codice? Ho richiesto di identificare le seguenti cose: 1. Il menu a discesa è visualizzato in modalità normale o in modalità di modifica. 2. come si collega l'origine dati alla lista a discesa. –
1. Il menu a discesa viene visualizzato in modalità modifica. 2. L'origine dati "Sorgenti" è una matrice statica ed è associata al "SourceDDL" come descritto nel secondo codice di segmento. Mentre il primo codice del segmento fa parte del metodo "generateColumns" descritto nella definizione Grid. – alessalessio
Inizio davvero a credere, che in realtà non è possibile raggiungere. Perché l'origine dati è effettivamente associata alla "colonna", non all'elemento in ogni singola riga. – alessalessio