• Passa al contenuto principale
  • Passa alla barra laterale primaria
  • INIZIA QUI
  • HOME
  • CHI SONO

APPin5Minuti

Creare APP Gestionali con Oracle APEX e Low-Code

Crea Applicazioni Gestionali con Oracle APEX e gli strumenti Low-Code.

Come creare Liste Dinamiche in Oracle APEX

Agosto 11, 2021

In Oracle APEX una lista (List) è un oggetto che serve per definire un elenco di link ad altre pagine della nostra applicazione piuttosto che verso altre applicazioni APEX o URL esterni.

Il menù di navigazione di una qualsiasi applicazione sviluppata in Oracle APEX è una Lista APEX.

Ciascuna singola voce di menù (chiamata List Entry) è caratterizzata da alcune proprietà specifiche come una etichetta, una icona e ovviamente l’URL di destinazione.

Oracle APEX supporta due tipologie di lista.

Quella più comune è la Lista Statica che, come suggerisce il nome, non può essere modificata dinamicamente.

Una Lista Dinamica, d’altro canto, è basata su una query SQL ed è molto utile quando la sua struttura dipende ad esempio dal valore di un Page Item o da un parametro di sessione.

In questo articolo desidero spiegarti come configurare una Lista Dinamica in Oracle APEX.

IN QUESTO ARTICOLO

  • Come creare una Lista Dinamica
  • Alcuni esempi di Liste Dinamiche
    • Esempio 1: lista semplice
    • Esempio 2: lista filtrata
    • Esempio 3: lista gerarchica

Come creare una Lista Dinamica

  • Accedi all’APP Builder e vai in Shared Components > Navigation > List
  • Clicca Create per creare una nuova Lista APEX
  • Seleziona l’opzione From Scratch e clicca Next
  • Dai un nome alla lista, seleziona il tipo lista Dynamic e clicca Next.
  • Inserisci la query per inizializzare la Lista APEX e clicca Next
  • Clicca Create per completare la configurazione della lista

La cosa veramente importante che devi tenere a mente quando vuoi creare una lista dinamica è la struttura della query SQL.

Infatti, affinché APEX sia in grado di inizializzare correttamente la lista, deve contenere nella sua definizione specifiche colonne.

Il rischio è che la lista non funzioni a dovere oppure che la pagina APEX che poi dovrà utilizzarla vada in errore.

Accedendo a questo link puoi vedere quale deve essere la query corretta per inizializzare una lista di tipo dinamico.

SELECT level, labelValue label, 
       [targetValue]            target, 
       [is_current]             is_current_list_entry,
       [imageValue]             image, 
       [imageAttributeValue]    image_attribute,
       [imageAltValue]          image_alt_attribute,
       [attribute1]             attribute1,
       [attribute2]             attribute2,
       [attribute3]             attribute3,
       [attribute4]             attribute4,
       [attribute5]             attribute5,
       [attribute6]             attribute6,
       [attribute7]             attribute7,
       [attribute8]             attribute8,
       [attribute9]             attribute9,
       [attribute10]            attribute10
FROM ...
WHERE ...
ORDER BY ...

Riconosciamo, ad esempio, la colonna dove inserire l’URL di destinazione.

In questo caso, ovviamente, dovrai costruire l’URL dinamicamente inserendo tutti i parametri previsti (per maggiori informazioni su come fare clicca qui)

Non è detto che tutte le colonne debbano necessariamente restituire un valore e, in particolar modo per quanto riguarda gli User Defined Attributes (attribute1,…, attribute10) devono essere inizializzati in funzione del template utilizzato.

Ad esempio, questa è una query che puoi usare per fare una prima prova

select null as lvl,
       'Etichetta Nr. 1' as label,
       '#' as target,
       null as attribute1,
       null as attribute2,
       null as attribute3,
       null as attribute4,
       null as attribute5,
       null as attribute6,
       null as attribute7,
       null as attribute8,
       null as attribute9,
       null as attribute10
from dual
union all
select null as lvl,
       'Etichetta Nr. 2' as label,
       '#' as target,
       null as attribute1,
       null as attribute2,
       null as attribute3,
       null as attribute4,
       null as attribute5,
       null as attribute6,
       null as attribute7,
       null as attribute8,
       null as attribute9,
       null as attribute10
from dual

Ecco le cose più importanti da tenere a mente:

  • La prima colonna nella query deve essere il livello, che dei sempre inserire ma puoi valorizzare come null (altrimenti potresti ottenere uno spiacevole ORA-06502: PL/SQL: errore numerico o valore: errore di conversione da carattere a numero)
  • La seconda colonna consente di definire l’etichetta e deve sempre essere presente. 
  • La successiva colonna obbligatoria è l’URL target, anch’essa è obbligatoria.
  • I valori da attribute1 ad attribute10 sono chiamati user defined attributes e servono a personalizzare l’aspetto della lista. Non devono necessariamente essere tutti inizializzati e dipendono dal template utilizzato

Alcuni esempi di Liste Dinamiche

Ora che hai acquisito i concetti base delle liste dinamiche, facciamo qualche esempio concreto.

A tal proposito qui sotto puoi trovare uno script SQL che puoi usare per creare una tabella custom che utilizzeremo per fare questo esercizio.

-- create tables
create table list_entries (
    id                             number generated by default on null as identity 
                                   constraint list_entries_id_pk primary key,
    label                          varchar2(30 char),
    order_num                      number,
    url                            varchar2(4000 char),
    parent                         number
                                   constraint list_entries_parent_fk
                                   references list_entries on delete cascade
);

Puoi scaricare un data set di esempio da questo link.

Esempio 1: lista semplice

Il primo esempio che implementeremo è una lista semplice.

  • Crea una nuova Lista Dinamica utilizzando la seguente Query SQL
SELECT null lvl, 
       label, 
       '#' target
FROM  list_entries  
ORDER BY label
  • Accedi all’APP Builder di Oracle APEX
  • Crea una Region di tipo List
  • Vai alle proprietà della Region List ed imposta la lista che abbiamo creato
  • Esegui la Preview per vedere il risultato

Esempio 2: lista filtrata

In questo esempio costruiamo una lista che può essere filtrata usando un Page Item.

  • Dall’APP Builder apri la definizione della pagina e crea un nuovo Page Item di tipo Text Item con queste proprietà
  • Crea una nuova Lista Dinamica usando questa Query SQL
SELECT null lvl, 
       label, 
       '#' target
FROM  list_entries  
WHERE INSTR(trim(upper(label)), :P25_LIST_ENTRY) > 0
ORDER BY label
  • Configura una nuova region di tipo List.
  • Per comodità puoi inglobare il Page Item che hai creato dentro alla Region List
  • Configura una nuova Dynamic Action
  • Queste sono le proprietà della Dynamic Action
  • Esegui la Preview per vedere il risultato

Esempio 3: lista gerarchica

Con un po’ di sforzo è possibile creare delle liste gerarchiche, utilissime se vuoi costruire del menù di navigazione dinamici.

  • Crea una nuova Lista Dinamica usando questa Query SQL
select level, 
       label, 
       '#' target
from list_entries
start with parent is null
connect by prior id = parent
order siblings by label
  • Configura una nuova region di tipo List.
  • Seleziona la Region List e vai in Attributes
  • Seleziona il template Menu Bar
  • Questo è il risultato finale

TI POTREBBE INTERESSARE:

  • CPQ in Oracle APEX
  • Come eseguire codice PL-SQL da JavaScript in Oracle APEX
  • Come gestire i files su Object Storage da Oracle APEX
  • Come migrare le applicazioni da Oracle Forms ad Oracle APEX
  • Costruiamo un CRM con Oracle APEX
  • Come configurare e personalizzare una Lista in Oracle APEX

list, oracle apex

Interazioni del lettore

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Barra laterale primaria

BENVENUTO!

Il mio nome è Daniele Trasarti, autore di APPin5Minuti, il blog italiano che parla di piattaforme di Oracle APEX e applicazioni low-code.

Qui troverai tantissimi tutorial e risorse per imparare a sviluppare in pochissimo tempo bellissime applicazioni per gestire i dati ed i processi della tua azienda.

Se vuoi saperne di più inizia da qui.

Seguimi sui social!

  • LinkedIn
  • Twitter

NEWSLETTER

Iscriviti anche tu per far parte della più grande community italiana di persone che amano sviluppare low-code!

api rest appsheet appsheet data sources appsheet views appsheet workflow automation autonomous database build apps cpq crm css cyber security database dynamic layout facebook flowform flows4apex google google cloud interactive grid interactive report javascript list microsoft microsoft access mobile oracle oracle apex oracle cloud oracle rest data service ords pl-sq PL-SQL power apps product configurator sales configurator security social login software gestionale sql theme roller ux woocommerce wordpress workflows

COMMENTI RECENTI

  1. Daniele Trasarti su Oracle APEX: come creare un’applicazione web in 5 minuti

    Ciao Sabatino, grazie per l'apprezzamento. Riguardo alla tua domanda ti consiglio di usare Oracle Cloud. Puoi creare un account gratis…

  2. Sabatino Iannazzo su Oracle APEX: come creare un’applicazione web in 5 minuti

    Ciao Daniele, complimenti per la guida, mi hai aperto un mondo! volevo chiederti se con Apex e Oracle Database Express…

  3. Laura su Autenticazione a 2 Fattori basata su TOTP (Time-based One-time Password) con Oracle APEX

    Ciao, trovo molto interessante il tuo articolo. Hai qualche suggerimento per l'autenticazione con spid? pensi di fare qualche guida al…

  4. Mario Volpetti su Oracle APEX: come creare un’applicazione web in 5 minuti

    Ottima spiegazione e complimenti per la semplicità che ai usato. Sono riuscito a farlo anche io con un foglio excel…

  5. Riccardo Liviabella su Google AppSheet: come creare una APP Mobile da un foglio Excel in 5 minuti

    Ciao Daniele e grazie per le tue interessanti spiegazioni. E' da un pò di anni che lavoro su Appsheet e…

  6. Daniele Trasarti su Come costruire Workflows Approvativi in Oracle APEX

    Ciao Bhavin, I think you badly copied PL-SQL because the one you provided is not correct. Fix the script and…

  7. Daniele Trasarti su Applicazione di Prenotazione Appuntamenti in Oracle APEX

    Grazie mille Franca!

Copyright © 2023 · APPin5Minuti.it · Privacy Policy · Cookie Policy