Sto utilizzando la nuova versione 3.0 di ng-grid ui-grid per creare una griglia nella mia applicazione. Quello che sto cercando di fare è rendere una delle celle modificabili nella mia tabella un elenco a discesa ng-options riempito con dati recuperati con una fabbrica angolare.Utilizzo di un menu a discesa ng-opzione in una griglia utente editableCellTemplate [ng-grid 3.x]
Sto provando a farlo utilizzando la funzione editableCellTemplate della griglia utente.
Ecco qualche esempio di codice:
HTML:
<div ui-grid="gridOptions" ui-grid-edit class="grid"></div>
Controller:
$scope.gridOptions = {
enableSorting: true,
enableFiltering: true,
enableCellEditOnFocus: true,
columnDefs: [
{ field: 'name',
sort: {
direction: 'desc',
priority: 1
}
},
{ field: 'gender', editType: 'dropdown', enableCellEdit: true,
editableCellTemplate: 'temp.html' },
{ field: 'company', enableSorting: false }
]};
temp.html:
<div>
<select ng-model="row.entity.gender" data-ng-options="d as d.type for d in genderType">
<option value="" selected disabled>Choose Gender</option>
</select>
</div>
Ecco un plunker con il codice . [Nota: questo è solo un esempio di codice. La matrice per ng-options viene estratta dalla fabbrica angolare nel codice effettivo e non dichiarata nell'ambito. editDropdownOptionsArray probabilmente non funzionerà perché i dati sono dinamici.]
E 'possibile farlo con ui-grid? Ho pensato che forse era un problema di scope, perché se avessi inserito il codice di opzione ng nella mia pagina HTML funzionava come previsto, ma quello che posso raccogliere dalla documentazione della griglia di rete è che il file temp.html dovrebbe essere nel campo di applicazione . So che questa roba è ancora in versione instabile, ma qualsiasi aiuto in merito sarebbe apprezzato!
UPDATE 2015/03/31:
Ciao ragazzi, solo una nota se il vostro provare questa soluzione e non funziona. A gennaio il codice per gli ambiti esterni è stato rifattorizzato da getExternalScopes()
a grid.addScope.source
. https://github.com/angular-ui/ng-grid/issues/1379
Ecco il plunkr aggiornato con il nuovo codice: Click Me!
Questa è una risposta molto più semplice rispetto all'utilizzo di un effettivo CellEditTemplate per i menu a discesa. Inoltre, se sei in modalità rowEdit, il tuo evento per rilevare le modifiche è 'gridApi.rowEdit.on.saveRow'. – Mordred
Ciao. Vedo che hai codificato i valori per "tipo" e in formato json. Ora, nel mio caso ottengo una lista di stringhe da dB e ora i valori non vengono visualizzati..che cosa dovrei fare ?? –