Inside Oracle APEX auf Deutsch (von Patrick Wolf)

Ausgewählten Tree Eintrag hervorheben

Während der DOAG APEX SIG Veranstaltung wurde ich gefragt wie man bei einer Tree Darstellung in Oracle APEX den aktuell ausgewählten Eintrag hervorheben/markieren kann.

Nach einer kurzen Nachdenkpause über das Problem hat es sich herausgestellt, dass es eine sehr einfache Lösung gibt, wenn man die Tree Query mit ein wenig HTML Code verbindet.

  1. Erstelle eine normale Tree Region.
  2. Erstelle eine Form Region die mit dem Tree synchronisiert werden soll.
  3. Ändere die Tree Query, damit sie das folgende CASE Statement enthält
    SELECT EMPLOYEE_ID AS ID
    , MANAGER_ID AS PID
    , CASE
    WHEN EMPLOYEE_ID = :P4_EMPLOYEE_ID THEN
    '<span style="color:white;background-color:blue;">'||
    LAST_NAME||
    '</span>'
    ELSE
    LAST_NAME
    END AS NAME
    , 'f?p=&APP_ID.:4:'||:SESSION||'::NO::P4_EMPLOYEE_ID:'||EMPLOYEE_ID AS LINK
    , NULL AS A1
    , NULL AS A2
    FROM #OWNER#.EMPLOYEES
Wie funktioniert das ganze?

Wenn der Tree gerendered wird, dann vergleicht das CASE Statement für den aktuell verarbeiteten Tree Eintrag/Datensatz die EMPLOYEE_ID mit dem aktuell in der Form (P4_EMPLOYEE_ID) angezeigten Datensatz.
Wenn die zwei IDs übereinstimmen, dann wird dem LAST_NAME noch ein SPAN verpasst, welches die notwendigen Style Informationen für die Anzeige beinhaltet.

Einfach, oder? :-)

Schaut Euch die lauffähige Demo des Beispiels an.

Labels: , , ,