Dati tabellari nel Client Lotus Notes

TIPS DEVELOPERS

  • 1 commenti
Sviluppando in client/server può capitare di avere la necessità di inserire all'interno di un form Lotus Notes un insieme di dati in forma tabellare. Per farlo si può utilizzare una vista incorporata, con o senza filtro sulle categorie ma in certe situazioni la vista incorporata non è adatta: le dimensioni della vista incorporata nel form sono predeterminate e non possono essere cambiare dinamicamente.

Se i dati sono statici e devono essere mostrati solo in visualizzazione una possibile soluzione consiste nell'inserire nel design del form una tabella contentente un campo multivalore per ogni colonna e per ogni campo inseriamo i valori delle righe per la colonna, ottenendo qualcosa di simile:

Come si vede, in questo caso possiamo avere dei problemi quando i singoli valori superano larghezza impostata per la colonna.

La soluzione più robusta consiste nel creare un campo rich text all'interno del quale costruire una tabella contentente i valori desiderati nelle celle corrispondenti ma la valorizzazione del conentuto dei campi rich-text richiede l'uso di lotusscript e delle classi dedicate o di tools di terze parti, con un impegno considerevole in termini di sviluppo e manutenzione del codice.

Un modo rapido ma pericoloso di affrontare il problema è quello di inserire nel form il codice HTML corrispondente alla tabella desiderata; inseriamo nel form un po' di markup html e css con dei campi calcolati in html passante fino ad ottenere, nel client Lotus Notes, qualcosa di simile a questo:

Una tabella resa in questo modo cresce bene al crescere del numero di righe (fino ad un certo punto, vedi "problemi e pericoli") e può essere stampata su più pagine e si può presentare decentemente, i dettagli di implementazione possono essere studiati guardando questo database di esempio che implementa la tecnica illustrata, ma prima di scaricare il database, attenzione ai

problemi e pericoli


Usate questa tecnica solo se sapete quello che state facendo, funziona, ma può presentare problemi se non implementata correttamente:
  • Se non erro, niente R5, solo R6 e R7
  • l'html passante viene renderizzato esclusivamente all'apertura del documento. Quindi niente edit e niente variazioni dinamiche.
  • Il supporto html e css all'interno di form del client notes è per così dire, frammentario, non tutto quello che dovrebbe funzionare funziona ed è necessario testare approfonditamente ogni implementazione prima dei rilasci.
  • Il client Lotus Notes reagisce molto male a markup scorretto all'interno del client
  • Anche il Designer non gradisce molto il markup scorretto preparatevi alla possibilità di danneggiare la rappresentazione interna dell'elemento di design (per limitare i danni, non fate come nel database di esempio e dedicate da subito un sottomodulo alla parte che genera il markup html e css della tabella)
  • Non più di 250 righe per la tabella se non volete sorprese...
  • Testate più del solito prima di andare in produzione, quando siete pronti, testate ancora.
  • Non ho idea di quanto sia supportato ufficialmente questo genere di cose nel Client Notes, dal momento che è una tecnica che non ho mai visto da nessuna parte, potrebbe anche succedere che in una relea se successiva le cose non funzionino nello stesso modo (in realtà, in Hannover con il client implementato in eclipse il supporto *potrebbe* migliorare, ma è una mia supposizione basata sul nulla)
  • l'ho già detto? testate più del solito.
PS:
avrei voluto illustrare meglio il contenuto dei campi calcolati ed il markup utilizzato, ma ho avuto problemi con l'editor del blog, per lo stesso motivo il database di esempio non è nel box degli allegati come dovrebbe essere ma è linkato direttamente nel corpo dell'articolo.

1 Commenti:

  • #1 ASDAD 01/20/2008 12:01:09 AM

    sdsada

Commenta articolo
 

Questo spazio web è stato creato da per un uso pubblico e gratuito. Qualsiasi tipo di collaborazione sarà ben accetta.
Per maggiori informazioni, scrivete a info@dominopoint.it

About Dominopoint
Social
Dominopoint social presence: