Tipi di Tablehandler

Abbiamo visto come il tablehandler possa considerarsi a tutti gli effetti uno dei pilastri di Genropy che rende semplice ed agevole la gestione di una table.

Ma un tablehandler, generato tramite gnrmkthresource, non esaurisce la sua ragione di vita solo ed esclusivamente per la gestione della singola tabella, ma può essere integrato, magari dopo qualche modifica e personalizzazione, in altri TableHandler o in webpage dedicate consentendo in tal modo di poter riutilizzare codice già scritto.

Per fare un esempio pratico, partendo come sempre dal progetto Sandbox, immaginiamo di avere generato le risorse per le tabelle cliente, fattura, fattura_riga e prodotto.

Ciascuna risorsa generata ha lo scopo preciso di gestire la View e la Form di ciascuna tabella, ma le tabelle sono legate da delle relazioni: un prodotto sarà inserito in una riga di una fattura che a sua volta farà parte di una fattura relativa ad un cliente. In questo caso le risorse già generate per la singola tabella possono essere riutilizzate per creare Form complesse in cui vengono visualizzati dati provenienti da più tabelle seguendo le relazioni che le legano.

Si potrà pertanto costruire una form del cliente che tramite il TableHandler delle fatture mostrerà la lista (view) delle sue fatture e la form della fattura le sue righe, ovvero potremmo avere un’altra form del cliente in cui vengono mostrati, tramite le relazioni che li legano, tutti i prodotti acquistati da un cliente.

In altre parole definita una risorsa, questa potrà essere riutilizzata molteplici volte in situazioni e contesti diversi, andando ad assemblare come un mosaico «pezzi» di codice autoconsistenti a servizio di form o view.

Dopo questa premessa, vediamo la lista dei tablehandler utilizzabili:

Ciascuno di questi svolge un ruolo specifico descritto in dettaglio ed il suo comportamento può essere personalizzato tramite i parametri passati dal chiamante.

Possono essere utilizzati, oltre a parametri specifici, tutti i parametri utilizzati nel Metodo th_options . Questo garantisce una notevole dinamicità al comportamento dei TableHandler, che possono essere personalizzati a seconda della pagina in cui vengono utilizzati.

Un tablehandler utilizza una delle view definite per una risorsa e lo può utilizzare in altre form modificandone, tramite i parametri di chiamata, la sua rappresentazione e il suo comportamento.

Parameters:

Parameter name Type Description
table T Permette di indicare la table di partenza dei dati
relation T In caso di tabella in relazione, permette di indicare la relation_name da seguire per recuperare i dati
formResource T Permette di indicare una specifica formResource del Tablehandler da utilizzare
viewResource T Permette di indicare una specifica viewResource del Tablehandler da utilizzare
condition T Permette di applicare una condizione ai dati forniti dalla relazione o dalla tabella
title T Titolo del box occupato dal Tablehandler (visualizzato sopra la griglia)
delrow B True o False, se impostato a False disattiva la possibilità di eliminare record
addrow B True o False, se impostato a False disattiva la possibilità di aggiungere record
export B True o False, se impostato a True permette di esportare i dati in formato Excel
virtualStore B True o False, se impostato a True il caricamento dei dati sarà automatico e la ricerca disabilitata. Comportamento diverso da th_options, verificare
searchOn B Se impostato a «False» disabilita la casella di testo per effettuare la ricerca quando questa è già in sostituzione alla query classica (es: quando virtualStore=False)
extendedQuery B True o False, se impostato a True attiva la ricerca avanzata e la toolbar di default del tablehandler
autoSave B Se impostato a True, il salvataggio automatico delle modifiche sarà abilitato
grid_multiSelect B True o False, se impostato a False impedisce la selezione multipla delle celle
grid_selfDragRows B True o False, se impostato a True permette l’ordinamento personalizzato delle righe tramite trascinamento
formInIframe B Se impostato a True la form sarà caricata in un iframe

Autore della sezione: Valter Vettorello