In questa lezione, viene utilizzato il widget DataGrid per creare una tabella. Il widget DataGrid dispone di funzionalità avanzate per l'interazione e la presentazione visiva che lo rendono preferibile rispetto al widget GridLayout per la visualizzazione di un array di record.
Nella lezione 4, è stata trascinata una variabile record sull'editor per creare un widget GridLayout. In questa lezione, viene trascinato un array di record sull'editor che, per impostazione predefinita, crea un widget DataGrid.
historyResults



selectionMode = DataGridLib.SINGLE_SELECTION,Il valore specificato assicura che l'utente possa selezionare una sola riga della griglia invece che più righe.
selectionListeners ::= cellClicked,
È stata aggiornata una proprietà listener, che utilizza un array di funzioni eseguite in ordine array-elemento. In particolare, è stata aggiunta una funzione all'array di funzioni associate alla proprietà selectionListeners. Il codice per la nuova funzione verrà scritto successivamente in questa lezione.
Le funzioni listener vengono eseguite in risposta ad un'azione dell'utente, come una selezione mediante clic, o, in alcuni casi, in risposta ad una chiamata alla funzione che seleziona o annulla la selezione di una riga o aggiorna una casella di spunta.
, alignment = DataGridLib.ALIGN_RIGHTAd esempio, il codice della dichiarazione per la colonna Capitale è ora simile a quello riportato di seguito:
new DataGridColumn {name = "loanAmount", displayName = "Capitale", width = 80,
alignment = DataGridLib.ALIGN_RIGHT},
, formatters = [ formatDollars ]L'intera dichiarazione è ora simile al codice riportato di seguito:
new DataGridColumn {name = "loanAmount", displayName = "Capitale", width = 80,
alignment = DataGridLib.ALIGN_RIGHT, formatters = [ formatDollars ]},
, formatters = [ DataGridFormatters.percentage ]
, formatters = [ formatDollars ]Ora, il contenuto del codice è quello riportato di seguito:

In generale, la proprietà formatters utilizza un array di nomi di funzione. Le funzioni possono essere predefinite oppure è possibile scrivere funzioni personalizzate. Ad esempio, la funzione percentage è fornita nella libreria DataGridFormatters inclusa nel progetto com.ibm.egl.rui.widgets.
InfoBus.subscribe("mortgageApplication.mortgageCalculated", addResultRecord);
Come
in precedenza, viene utilizzato InfoBus per richiamare una funzione quando il
servizio restituisce un nuovo calcolo.// Aggiornare la griglia in modo da includere il calcolo del prestito ipotecario più recente function addResultRecord(eventName STRING in, dataObject ANY in) resultRecord MortgageCalculationResult = dataObject as MortgageCalculationResult; historyResults.appendElement(resultRecord); historyResults_ui.data = historyResults as ANY[]; endIn questo caso, un valore in entrata viene inviato ad un record MortgageCalculationResult. I nuovi risultati vengono quindi aggiunti all'array dei risultati e la proprietà data viene aggiornata. Tale aggiornamento determina l'aggiornamento del widget.
// Pubblicare un evento su InfoBus ogni volta che l'utente seleziona un calcolo precedente
function cellClicked(myGrid DataGrid in)
updateRec MortgageCalculationResult = myGrid.getSelection()[1]
as MortgageCalculationResult;
InfoBus.publish("mortgageApplication.mortgageResultSelected", updateRec);
end
La funzione richiama la riga della griglia di dati selezionata
dall'utente e la fornisce a Infobus. A sua volta, Infobus richiama una
funzione in qualsiasi gestore che ha eseguito la sottoscrizione all'evento
denominato “mortgageApplication.mortgageResultSelected”. function formatDollars(class string, value string, rowData any in) value = mortgageLib.formatMoney(value); endIl valore del secondo parametro è disponibile per il codice runtime EGL perché il modificatore del parametro è InOut per impostazione predefinita.
Notare che viene nuovamente utilizzata la funzione formatMoney dalla libreria mortgageLib.
Nella lezione successiva, questo gestore verrà integrato con la parte rimanente dell'applicazione.