In JSF wird die Möglichkeit zum Einbinden einer Auswahlspalte mit Kontrollkästchen in einer Datentabelle bereitgestellt. Mit dieser Spalte mit Kontrollkästchen können Sie mehrere Zeilen in der Tabelle auswählen, um bestimmte Aktionen für diese vorzunehmen. Sie können zum Beispiel mehrere Zeilen zum Löschen markieren.
Sie können eine bestimmte Anordnung von Eigenschaften in einer Feldgruppe aus Datensätzen festlegen, um anzugeben, dass diese Feldgruppe auf einer Webseite mit einer Auswahlspalte angezeigt werden soll. Der Benutzer kann dann mehrere Kontrollkästchen auswählen. In EGL wird angezeigt, welche Zeilen ausgewählt wurden, indem eine Feldgruppe mit Ganzzahlen zurückgegeben wird, mit denen die Indizes der ausgewählten Zeilen dargestellt werden. Wenn zum Beispiel Kontrollkästchen für die erste, dritte und vierte Zeile in der Datentabelle ausgewählt werden, wird die Feldgruppe mit Ganzzahlen in EGL auf [1,3,4] festgelegt. In EGL werden 0-basierte JSF-Feldgruppen automatisch in 1-basierte EGL-Feldgruppen konvertiert.
purchaseList customerPurchase[3];
In diesem Beispiel wird der folgende Beispieldatensatzabschnitt verwendet:record customerPurchase type BasicRecord
custName string;
totalPurchases decimal(10,2);
end
allSelectedRows int[0];
purchaseList customerPurchase[3]
{selectedRowItem = allSelectedRows};
Diese Tabelle enthält eine kleine Spalte ohne Kennzeichnung, die Kontrollkästchenelemente enthält. Wenn Sie auf das Kontrollkästchen klicken, um es auszuwählen, und zur Eigenschaftsansicht wechseln, können Sie sehen, dass dieses Kontrollkästchen nicht an Felder in der Datensatzvariable gebunden ist, sondern an die Feldgruppe mit Ganzzahlen, die Sie für die Indizes der ausgewählten Zeilen definiert haben.
Bei diesem JSF-Handler wird zum Beispiel auf folgende Weise eine Auswahlspalte verwendet:
handler multiSelectPage type JSFHandler
{onPreRenderFunction = onPreRender,
view = "multiSelectPage.jsp"}
//Array of customer records and their purchase amount
purchaseList customerPurchase[3]
{selectedRowItem = allSelectedRows};
//indexes of the selected rows
allSelectedRows int[0];
//Sum of selected purchases
purchaseSum decimal(10,2);
function onPreRender()
//initialize the array of customers
purchaseList[1].custName = "Company A";
purchaseList[1].totalPurchases = "500.23";
purchaseList[2].custName = "Company B";
purchaseList[2].totalPurchases = "232.55";
purchaseList[3].custName = "Company C";
purchaseList[3].totalPurchases = "499.12";
end
function sumRows()
purchaseSum = 0;
counter int = 0;
customerIndexToAdd int;
for (counter from 1 to allSelectedRows.getSize() by 1)
customerIndexToAdd = allSelectedRows[counter];
purchaseSum += purchaseList[customerIndexToAdd].totalPurchases;
end
end
end
record customerPurchase type BasicRecord
custName string;
totalPurchases decimal(10,2);
end
In diesem Beispiel wird vorausgesetzt, dass Sie die Feldgruppe purchaseList auf die Seite gezogen haben, um eine JSF-Datentabelle zu erstellen, und dass Sie die Funktion sumRows und die Variable purchaseSum an eine Befehlsschaltfläche bzw. an ein Ausgabesteuerelement auf der Webseite gebunden haben.