
Grundsätzlich wird das Verhalten der Selektion und ob es eine Selektion an der Table gibt durch das Property selectionMode bestimmt. Falls diese den Wert none hat gibt es keine Selektion. In allen anderen Fällen kann der Benutzer Lead- und Sekundärselektionen setzen, d.h. es wird der Selektionsstatus der Context-Elemente, die einer Tabellenzeile entsprechen, farblich wiedergegeben und der Benutzer kann diesen Selektionsstatus durch Mausklick, Tastendruck und eventuell dem Selektionsmenü verändern.
Das Selektieren in einer Table gestaltet sich unterschiedlich, je nachdem, ob der Applikationsparameter WDUIGUIDLINE auf GL11 oder GL20 gesetzt ist.
WDUIGUIDELINE=GL11
Durch das Klicken (oder Drücken der Leertaste) auf einem Selektionsknopf in der Selektionspalte wird die entsprechende Zeile selektiert und alle vorigen Selektionen zurückgenommen. Dies geschieht auch, wenn man in eine andere Tabellenzelle klickt, sofern man nicht einen editierbaren Zelleditor ( InputField, CheckBox, etc.) oder einen seinerseits klickbaren Zelleditor ( Button, LinkToAction, etc) trifft. Beachten Sie dabei, dass beim Klicken auf einen Link, Button oder die Auf-/Zuklappen-Ikone einer Tree-Spalte die Selektion jedoch nicht geändert wird.
Falls die Table die Lead-Selection unterstützt (d.h. selectionMode=auto, single oder multi) wird dabei immer die Lead-Selection gesetzt, ansonsten ( selectionMode=singleNoLead, multiNoLead) eine "einfache" Selektion.
Falls der Benutzer bei gedrückter STRG-Taste versucht, eine selektierte Zeile zu selektieren, wird diese deselektiert. Ausnahme: es handelt sich um die Lead-Selection und der Context-Knoten hat die Selektionskardinalität 1..1 oder 1..n.
Im Falle von selectionMode=multi bzw. multiNoLead ist Mehrfachselektion möglich, d.h. durch Klicken (oder Betätigen der Leertaste) bei gleichzeitigem Drücken von SHIFT oder STRG können mehrere Zeilen selektiert werden. Dabei bleibt aber die Lead-Selection unberührt - es sei denn, sie wird wie oben beschrieben per STRG+Klick gelöscht.
Die Selektionsspalte kann mittels des Properties SelectionColumnDesign ausgeblendet werden. Dies sollte man nur bei readOnly- Table s machen. Ansonsten besteht die Gefahr, dass eine Table nicht mehr selektierbar ist, z.B. wenn alle Zelleditoren aus InputField s, Button s, etc. bestehen.
Das Navigieren per Cursor durch die Table beeinflusst die Selektion nicht.
Selektions- und Hierarchiemenü
Table s können Selektionsschalter (Tabellen-Selektionsmenü) in der linken oberen Ecke enthalten.
Falls Mehrachselektion in der Table möglich ist, d.h. falls selectionMode = multi oder multiNoLead oder aber wenn selectionMode=auto und die dataSource die Selektionskardinalität 0..n oder 1..n hat, kann der der Benutzer über das Menü alle Zeilen selektieren oder deselektieren. Die Lead-Selection bleibt beim Select all erhalten. Falls keine Lead-Selection gesetzt ist, wird durch Select all keine Lead-Selection gesetzt. Beim Deselect all wird auch die Lead-Selection mit gelöscht.
Sie finden ein Beispiel im System in der Component WDR_TEST_TABLE unter Selection.
Wenn die Table mit der Aggregation TableRowArrangement der Art TableRowGrouping versehen ist, kann der Benutzer zusätzlich zum Alles auswählen und Auswahl löschen auch alles aufklappen bzw. alles zuklappen.
Sie finden ein Beispiel im System in der Component WDR_TEST_TABLE unter RowGrouping.
Beachten Sie, dass der Selektionsschalter (Tabellen-Selektionsmenü) für hierarchische Tabellen ( TreeByKeyTableColumn, TreeByNestingTableColumn) nicht zur Verfügung steht.
Selektionsverhalten und Performance-Aspekte
Eine Selektion führt immer zu einem Roundtrip, wenn die Lead-Selection verändert wird, das Ereignis onSelect der Table gebunden ist oder das RowArrangement TableRowGrouping verwendet wird.
Das bedeutet umgekehrt, dass eine Table ohne TableRowGrouping, ohne onSelect-Action und mit selectionMode = multiNoLead oder singleNoLead-Selektionen keinen Roundtrip auslösen und so zu einem schnelleren Arbeiten mit der Table und verbesserter Usability führen.
Eine sekundäre Selektion löst keinen Roundtrip aus, es sei denn, Sie verwenden den onSelect-Event der Table. Außerdem darf es keine TableRowGrouping geben und selectionChangeBehaviour muss auf auto gesetzt sein.
WDUIGUIDELINE=GL20
Die Selektion durch den Benutzer folgt unter bestimmten Bedingungen dem Fokus. Die Selektion wandert also mit, wenn der Benutzer mit der Tastatur in der Table Navigationsschritte ausführt. Klickt der Benutzer in oder auf einen Zelleditor (z.B. um ein InputField zu fokussieren oder einen Button auszuwählen), so wird eine Selektion ausgeführt.
Dieses Verhalten wird nur dann ausgelöst, wenn die Selektion einer Table keinen Roundtrip verursacht, d.h. wenn die folgenden Bedingungen erfüllt sind:
Die Table verwendet kein RowArrangement der Ausprägung TableRowGrouping
Die Eigenschaft Table.SelectionMode steht entweder auf multiNoLead oder singleNoLead
Für onSelect oder onLeadSelect ist kein Eventhandler gesetzt
Wenn keine dieser Bedingungen erfüllt sind, gilt das bisherige Verhalten (siehe GL11).
Wie schon im Fall GL11 erwähnt, werden in diesem Fall auch keine Roundtrips bei der Selektion ausgelöst, was zu einer verbesserten und schnelleren Bedienbarkeit der Table führt. Daher sollte, wenn möglich, diesen Einstellungen der Vorzug gegeben werden.
Es ist natürlich auch möglich, eine Table mit Lead-Selection für GL20 zu benutzen.
Falls GL20 eingestellt ist, dann muss immer Table.selectionChangeBehaviuour=auto sein.
Die Visualisierung der Lead-Selection und der sekundären Selektion ist gleich, es gibt bei der Darstellung am Bildschirm keine Unterschiede mehr. Somit sind Zeilen mit Lead-Selection und mit sekundärer Selektion gleichermaßen dunkel-orange (im Falle des Themes SAP_Tradeshow_plus) hinterlegt.