Sto creando un jqgrid con colonne a discesa e utilizzo la modifica delle celle. Ho bisogno delle opzioni del menu a discesa colonne per modificare dinamicamente e ho provato l'attuazione del presente impostando la colonna di essere:jqGrid opzione di selezione dinamica
{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select" },
e poi in caso beforeCellEdit ho:
beforeEditCell: function(id, name, val, iRow, iCol) {
if(name=='AccountLookup') {
var listdata = GetLookupValues(id, name);
if (listdata == null) listdata = "1:1";
jQuery("#grid").setColProp(name, { editoptions: { value: listdata.toString()} })
}
},
GetLookupValues restituisce semplicemente una stringa nel formato "1: One; 2: Two" ecc. Che funziona bene tuttavia le opzioni sono popolate con un clic indietro - cioè clicco su AccountID nella riga 1, e il menu a discesa è vuoto, tuttavia quando poi fare clic su AccountID nella riga 3 le opzioni che ho impostato nella riga 1 clic sono visualizzate nella riga 3 clic. E così via. Quindi sempre uno scatto dietro.
C'è un altro modo per ottenere ciò di cui ho bisogno? Bacialmente le opzioni a discesa visualizzate cambiano sempre e ho bisogno di caricarle quando l'utente entra nella cella per la modifica. Forse posso in qualche modo ottenere il controllo select nell'evento beforeEditCell e inserire manualmente i suoi valori invece di usare la chiamata setColProp? Se così potrei avere un esempio di farlo per favore?
Un'altra cosa: se il menu a discesa è vuoto e un utente non annulla la modifica della cella, lo script della griglia genera un errore. Sto usando la modifica del clientarray se questo fa la differenza.
Un'ultima cosa: l'opzione getChangedCells sulla colonna di selezione restituisce sempre il testo e non il valore/Id - c'è un modo per aggirare questo? –