.. _widgetpedia/elements/inputfields/dbselect/remoteSelect: remoteSelect ============ La ``remoteSelect`` è una variante della *dbSelect* che non si collega però al database della nostra istanza per leggere dei valori, bensì a un **metodo**, che utilizzeremo poi per fare le dovute chiamate al database remoto. La *remoteSelect* può essere per esempio utilizzata per connettersi a un service esterno e recuperare delle informazioni da visualizzare. Supponiamo per esempio di volerci collegare a un database cinematografico e reperire alcuni dati di un film. Dalla tendina accederemo direttamente a *quel* database, ma esattamente come se fossimo in una *dbSelect* di Genropy: .. raw:: html
Esempio di remoteselect
Nell'esempio abbiamo un :ref:`formbuilder` con una remoteSelect, dove specifichiamo un ``method``, ovvero il metodo che vogliamo utilizzare, e che andremo poi a definire subito sotto, infine con ``auxColumns`` faremo visualizzare non solo la colonna di default con l’id del film, ma anche una colonna con il titolo e con l’anno, questo al fine di facilitare la selezione da parte dell’utente. Si noti che il metodo riceve dalla nostra remoteSelect una ``_querystring``, che sarebbero i caratteri digitati dall’utente. La remoteSelect si aspetta come risultato una **tupla composta da una Bag dei valori compatibili con la querystring e un dizionario con le colonne** che abbiamo indicato come auxColumns. .. raw:: html
**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. | +------------------------+------+--------------------------------------------------+ |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 | +------------------------+------+--------------------------------------------------+ | *remoteSelect Parametri* | +------------------------+------+--------------------------------------------------+ |method |T |Permette di indicare il metodo da utilizzare per | | | |la ricerca dei dati. Il metodo deve restituire una| | | |tupla contenente la Bag dei risultati e un | | | |dizionario delle colonne | +------------------------+------+--------------------------------------------------+ .. sectionauthor:: Davide Paci