dbSelect¶
dbSelect è uno dei widget più utili ed usati in Genropy. Lo scopo di dbSelect è essenzialmente quello di inserire nel record corrente la foreignkey da un altro record in relazione.
Uno dei modi più rapidi per ottenere ed inserire la foreign key è fornire all’utente quello che appare come un semplice campo testo, in cui possa digitare un frammento di testo (querystring) ed ottenere in tempo reale un menu a tendina di record compatibili con la stringa presente nel campo. Quando l’utente seleziona col click uno dei risultati dalla tendina o facendo invio il primo di essi, la foreignkey viene inserita come reale valore del campo, anche se nella form vedremo la sua rappresentazione, specificata dall’attributo rowcaption della table, o ridefinita dall’omonimo parametro. Il menu a tendina è configurabile (con i parametri columns ed auxcolumns) e può mostrare al suo interno una vera e propria tabella suddivisa in colonne.
L’utilizzo del widget dbselect implica l’esecuzione rapidissima e in tempo reale di svariate query che cerchino nella table indicata dal parametro dbtable record compatibili con la querystring. La colonna su cui viene cercato un match è di default quella specificata dall’attributo rowcaption, ma possono essere ridefinite dall’attributo columns.
Tipicamente la querystring può includere i primi caratteri di un nome o di un codice
I.E. «smi» per «Smith»
Ma anche diversi frammenti:
I.E. «Jo smi» per «John Smith»
O su diverse colonne presenti nel parametro columns
I.E. «smith boston» per John Smith che ha come colonna città Boston.
Esempi¶
L’attributo selected_¶
Grazie all’attributo selected_
è possibile portare nel workspace, oltre alla foreignkey del record selezionato, anche delle altre colonne del record a piacimento, e specificare il path nel quale andare a immagazzinare tale valore, nella forma:
selected_nomecolonna = 'pathdidestinazione'
Nell’esempio stiamo quindi copiando, al path .vat_type_code, il valore della colonna vat_type_code del record che andremo a selezionare. Ogni volta che cambieremo la selezione, ovviamente, verrà rieseguita la query e verrà aggiornato il valore al path indicato.
Suggerimento
Si noti che non è assolutamente necessario che il nome della colonna e del path corrispondano, ma il nome del path può essere totalmente a piacere
Da un recente aggiornamento di novembre 2022 è anche possibile usare la selected con colonne in relazione, senza che sia obbligatorio l’uso di una aliasColumn. La sintassi sarà la seguente:
selected_nomeapiacere = '.pathdidestinazione=@colonnainrelazione'
selected_provincia_cliente = '.provincia=@cliente_id.provincia'
Suggerimento
Si noti che in questa sintassi andrà indicato il path di destinazione, il path della colonna in relazione, e nella parte dopo selected_ sarà possibile indicare non il nome della colonna di provenienza, ma un nome totalmente a piacere.
Parametri:
Nome parametro |
Tipo |
Descrizione |
---|---|---|
hasDownArrow |
B |
True or False, permette di indicare se il campo mostrerà o meno una tendina |
selected_ |
T |
It’s a prefix for kwargs. The parameter value is the datapath you want the column’s value copied into. i.e. selected_firstname=»myfriend.firstname» |
Html Parametri |
||
_class |
T |
Permette di assegnare una specifica classe CSS al widget |
height |
T |
Permette di assegnare un’altezza al widget |
width |
T |
Permette di assegnare una larghezza al widget |
border |
T |
Permette di assegnare un bordo al widget |
rounded |
L |
Permette di assegnare un arrotondamento al widget |
style |
T |
Permette di assegnare uno stile (da esprimersi come serie di attributi CSS) al widget |
background |
T |
Permette di assegnare uno sfondo al widget |
Validations Parametri |
||
validate_empty |
T |
Restituisce un errore se il valore è nullo o è una stringa vuota |
validate_notnull |
B |
Restituisce un errore se il campo è vuoto |
validate_call |
T |
Restituisce un errore js |
validate_regex |
T |
Restituisce un errore se il campo corrisponde esattamente a quanto indicato |
validate_remote |
T |
Metodo RPC che effettua la validazione del valore inserito |
Common Parametri |
||
value |
T |
Permette di inserire un valore, in termini assoluti (es. value=”Pippo”) o posizionali (es. value=”^.name”). Nel primo caso verrà assegnato il valore “Pippo”, nel secondo verrà assegnato a “name” il valore che inseriremo nell’inputfield. |
lbl |
T |
Permette di inserire un’etichetta per il campo. Per div, caselle e aree di testo la «lbl» verrà visualizzata prima del campo, per le checkbox invece verrà mostrata dopo. |
lbl_ |
T |
Permette di assegnare attributi alla lbl (es: «lbl_class») |
default |
T |
Valore di default se non modificato |
placeholder |
T |
Testo di anteprima (non rappresenta un valore inserito ma solo un suggerimento) |
disabled |
B |
Permette di disabilitare il campo. Es: disabled=True |
tabindex |
L |
In un formbuilder con una serie di campi, permette di dare un ordinamento personalizzato nella compilazione nel passaggio da un campo a un altro con il tabulatore (es: tabindex=4) |
_autoselect |
B |
Se impostato a True, alla selezione del campo il contenuto del campo sarà automaticamente selezionato |
dbSelect Parametri |
||
emptyLabel |
T |
Permette di personalizzare la label della riga vuota (es: emptyLabel=”Nuovo record”) |
emptyLabel_ |
T |
Permette di aggiungere dei parametri personalizzati alla emptyLabel (es: emptyLabel_first=True per posizionare la emptyLabel all’inizio, e emptyLabel_class per assegnare una classe css particolare) |
alternatePkey |
T |
Permette di indicare una colonna della tabella da salvare al path indicato in alternativa alla pkey (es: alternatePkey=”code”) |
zoom |
B |
Di default True, se impostato a False viene disabilitata la freccina accanto alla label che permette di aprire in modalità dialog il TableHandler della tabella a cui si riferisce il widget |
rowcaption |
T |
Overrides table’s rowcaption. It’s a table’s column or columns that represents the rowinstead of record’s pkey. i.e. fullname instead of id. |
method |
T |
Permette di indicare un metodo che sostituisce quello standard per recuperare i dati dal server |
selectedCb |
T |
A javascript callback function called when a record is selected with dbselect. The callback receives an item containing the selected record with all columns added in column, auxcolumns and hiddencolumns. |
Query Parametri |
||
dbtable |
T |
(deprecato, sostituito da «table») |
table |
T |
Indica la tabella da cui reperire i dati, nella forma «package.table» |
columns |
T |
Le colonne su cui effettuare la query |
auxColumns |
T |
Per personalizzare l’anteprima dei risultati della query, è possibile mostrare subito altre colonne da visualizzare |
condition |
T |
È possibile personalizzare la query con una «condition» equivalente a una WHERE in SQL |
condition_ |
T |
Permette di passare i parametri alla condition |
weakCondition |
B |
If there are no results applying the condition parameter, the condition is relaxed. |
hiddencolumns |
T |
Per personalizzare l’anteprima dei risultati della query, è possibile nascondere subito alcune colonne |
limit |
L |
Per personalizzare l’anteprima dei risultati della query, è possibile indicare un numero massimo di risultati (di default: 10) |
order_by |
T |
Corresponding to the sql «ORDER BY» operator |