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