Erstellen Sie eine Tabelle, in der Sie auf eine Zeile klicken können, um eine frühere Berechnung anzuzeigen.
In dieser Lerneinheit erstellen Sie mit dem Widget DataGrid eine Tabelle. Das Widget DataGrid besitzt erweiterte Funktionen zur Interaktion und visuellen Darstellung und ist daher für die Anzeige von Feldgruppen von Datensätzen dem Widget GridLayout vorzuziehen.
In Lerneinheit 4 haben Sie eine Satzvariable auf den Editor gezogen, um ein Widget GridLayout zu erstellen. In dieser Lerneinheit ziehen Sie eine Feldgruppe von Datensätzen auf den Editor, der standardmäßig ein Widget DataGrid erstellt.
historyResults



selectionMode = DataGridLib.SINGLE_SELECTION,
Der angegebene Wert stellt sicher, dass der Benutzer nicht mehrere Zeilen des Rasters, sondern nur eine einzelne Zeile auswählen kann. selectionListeners ::= cellClicked,
Sie haben gerade eine Listenereigenschaft aktualisiert, wofür eine Feldgruppe von Funktionen in der Feldgruppe-Element-Reihenfolge ausgeführt werden muss. Sie haben insbesondere eine Funktion an die Feldgruppe der Funktionen angehängt, die zur Eigenschaft selectionListeners gehören. Später in dieser Lerneinheit werden Sie die neue Funktion codieren.
Die Listenerfunktionen werden als Antwort auf eine Benutzeraktion wie einen Klick bzw. manchmal als Antwort auf einen Funktionsaufruf ausgeführt, mit dem eine Zeile aus- oder abgewählt wird, die ein Kontrollkästchen aktualisiert.
, alignment = DataGridLib.ALIGN_RIGHT
Beispiel: Die Deklaration für die Spalte 'Principal' sieht nun wie folgt aus:
new DataGridColumn {name = "loanAmount", displayName = "Principal", width = 80,
alignment = DataGridLib.ALIGN_RIGHT},
, formatters = [ formatDollars ]
Nun sieht die gesamte Deklaration wie folgt aus:
new DataGridColumn {name = "loanAmount", displayName = "Principal", width = 80,
alignment = DataGridLib.ALIGN_RIGHT, formatters = [ formatDollars ]},
, formatters = [ DataGridFormatters.percentage ]
, formatters = [ formatDollars ]
Nun hat der Code folgenden Inhalt:

Im Allgemeinen nimmt die Eigenschaft formatters eine Feldgruppe von Funktionsnamen an. Die Funktionen können vordefiniert sein oder Sie können angepasste Funktionen schreiben. Beispiel: Die Funktion percentage wird in der Bibliothek DataGridFormatters bereitgestellt, die im Projekt com.ibm.egl.rui.widgets enthalten ist.
InfoBus.subscribe("mortgageApplication.mortgageCalculated", addResultRecord);
Wie zuvor rufen Sie eine Funktion über den Infobus auf, wenn der Service eine neue Berechnung zurückgibt.// Update the grid to include the latest mortgage calculation
function addResultRecord(eventName STRING in, dataObject ANY in)
resultRecord MortgageCalculationResult = dataObject as MortgageCalculationResult;
historyResults.appendElement(resultRecord);
historyResults_ui.data = historyResults as ANY[];
end
Hier können Sie einen eingehenden Wert in einen MortgageCalculationResult-Datensatz umsetzen. Anschließend hängen Sie die neuen Ergebnisse an die Ergebnisfeldgruppe an und aktualisieren die Eigenschaft data. Diese Aktualisierung führt dazu, dass das Widget aktualisiert wird.// Publish an event to the InfoBus whenever the user selects an old calculation
function cellClicked(myGrid DataGrid in)
updateRec MortgageCalculationResult = myGrid.getSelection()[1]
as MortgageCalculationResult;
InfoBus.publish("mortgageApplication.mortgageResultSelected", updateRec);
end
Die Funktion ruft die vom Benutzer ausgewählte Zeile des Datenrasters ab und stellt sie dem Infobus zur Verfügung. Der Infobus ruft seinerseits eine Funktion in allen Handlern auf, die das Ereignis “mortgageApplication.mortgageResultSelected” subskribiert haben.function formatDollars(class string, value string, rowData any in)
value = mortgageLib.formatMoney(value);
end
Der Wert des zweiten Parameters ist für den EGL-Laufzeitcode verfügbar, da der Parameteränderungswert standardmäßig InOut ist.
Achten Sie darauf, die Funktion formatMoney aus der Bibliothek mortgageLib wiederzuverwenden.
In der nächsten Lerneinheit integrieren Sie diesen Handler in den Rest der Anwendung.