En esta lección, utilice el widget DataGrid para crear una tabla. El widget DataGrid tiene prestaciones avanzadas para la interacción y la presentación visual que hacen que sea preferible al widget GridLayout para visualizar una matriz de registros.
En la lección 4, ha arrastrado una variable de registro al editor para crear un widget GridLayout. En esta lección, va a arrastrar una matriz de registros al editor, que de forma predeterminada crea un widget DataGrid.
historyResults



selectionMode = DataGridLib.SINGLE_SELECTION,El valor especificado asegura que el usuario sólo puede seleccionar una fila de la cuadrícula y no varias filas.
selectionListeners ::= cellClicked,
Acaba de actualizar una propiedad de escucha, que acepta una matriz de funciones ejecutadas en orden de elemento de matriz. Concretamente, ha añadido una función a la matriz de funciones asociadas con la propiedad selectionListeners. Más adelante en esta lección, codificará la nueva función.
Las funciones de escucha se ejecutan como respuesta a una acción de usuario, como por ejemplo una pulsación o, en algunos casos, como respuesta a una llamada de función que selecciona o deselecciona una fila o que actualiza un recuadro de selección.
, alignment = DataGridLib.ALIGN_RIGHTPor ejemplo, la declaración para la columna Principal ahora se parece al siguiente código:
new DataGridColumn {name = "loanAmount", displayName = "Principal", width = 80,
alignment = DataGridLib.ALIGN_RIGHT},
, formatters = [ formatDollars ]La declaración completa ahora se parece al siguiente código:
new DataGridColumn {name = "loanAmount", displayName = "Principal", width = 80,
alignment = DataGridLib.ALIGN_RIGHT, formatters = [ formatDollars ]},
, formatters = [ DataGridFormatters.percentage ]
, formatters = [ formatDollars ]El código ahora tiene el siguiente contenido:

En general, la propiedad formatters acepta una matriz de nombres de función. Las funciones pueden estar predefinidas, o bien puede escribir funciones personalizadas. Por ejemplo, la función percentage se proporciona en la biblioteca DataGridFormatters que está incluida en el proyecto com.ibm.egl.rui.widgets.
InfoBus.subscribe("mortgageApplication.mortgageCalculated", addResultRecord);
Como antes, utilice el InfoBus para invocar una función que el servicio devuelva un nuevo cálculo. // Actualizar la cuadrícula para incluir el cálculo más reciente de la hipoteca function addResultRecord(eventName STRING in, dataObject ANY in) resultRecord MortgageCalculationResult = dataObject as MortgageCalculationResult; historyResults.appendElement(resultRecord); historyResults_ui.data = historyResults as ANY[]; endAquí, convierte un valor entrante en un registro MortgageCalculationResult. A continuación, añade los nuevos resultados a la matriz de resultados y actualiza la propiedad data. Dicha actualización hace que se renueve el widget.
// Publicar un evento en el InfoBus siempre que el usuario selecciona un cálculo antiguo
function cellClicked(myGrid DataGrid in)
updateRec MortgageCalculationResult = myGrid.getSelection()[1]
as MortgageCalculationResult;
InfoBus.publish("mortgageApplication.mortgageResultSelected", updateRec);
end
La función recupera la fila de la cuadrícula de datos que ha seleccionado el usuario y proporciona dicha fila al Infobus. A su vez, el Infobus invoca una función en cualquier manejador que se haya suscrito al evento llamado “mortgageApplication.mortgageResultSelected.”function formatDollars(class string, value string, rowData any in) value = mortgageLib.formatMoney(value); endEl valor del segundo parámetro está disponible en el código de tiempo de ejecución EGL ya que, de forma predeterminada, el modificador de parámetro es InOut.
Tenga en cuenta que está reutilizando la función formatMoney de la biblioteca mortgageLib.
En la lección siguiente, integrará este manejador con el resto de la aplicación.