Metodo th_filterset¶
In alternativa all’uso delle sections descritto nella sezione Metodo th_sections , esiste un’ulteriore opzione offerta dai filtri: questo secondo metodo permette di «filtrare» direttamente i record mostrati nella vista, con la particolarità che, rispetto alle sections, in questo caso non vengono eseguite delle query, bensì vengono semplicemente filtrati i dati presenti sul client.
Di conseguenza, i filtri possono essere applicati solo in presenza di griglie statiche , ma possono in alcuni casi essere un”alternativa estremamente più efficiente rispetto alle sections: non vengono infatti fatte chiamate al database, e il risultato dell’applicazione del filtro è praticamente istantaneo.
Per impostare i filtri, si opera in modo del tutto analogo a quanto si fa per le sections. Si può quindi aggiungere una toolbar:
def th_top_toolbarsuperiore(self,top):
top.slotToolbar('5,filterset@cliente_tipo,5',childname='superiore',_position='<bar')
E si definisce il metodo th_filterset
, seguito dal codice desiderato:
def th_filterset_cliente_tipo(self):
return [dict(code='tutti', caption='Tutti'),
dict(code='filter_pv', caption='Privati', cb='cliente_tipo_codice=="PV"'),
dict(code='filter_gd', caption='Grande Distribuzione', cb='cliente_tipo_codice=="GD"'),
dict(code='filter_ng', caption='Negozi', cb='cliente_tipo_codice=="NG"')]
Come si nota, l’unica differenza rispetto alle sections è che invece di una condition , i filtri utilizzano una callback javascript, dove si va a specificare l’equivalente della condizione lato client.
Autore della sezione: Davide Paci