[genropy] Re: numerazione record di una lista
- From: Francesco Porcari <francesco.porcari@xxxxxxxxxxx>
- To: genropy@xxxxxxxxxxxxx
- Date: Wed, 17 Feb 2016 17:33:57 +0100
Il giorno 17 feb 2016, alle ore 17:09, Alessandro Tufi
<alessandro.tufi@xxxxxxxxx> ha scritto:
Mi chiedono di dare un ordine alla lista delle righe delle offerte.
In pratica il primo rigo deve avere il num. 1, etc..
Tale ordine serve in fase di export (in pdf o altro). Inoltre anche la lista
degli agenti va in ordine di importanza: il primo (che prende una provvigione
più alta), il secondo (che muore di fame), il terzo..etc
Per ora gestisco un campo numerico tramite triggers, ed ad ogni inserimento
leggo il valore dell'ultima riga e lo incremento di uno.
Ora mi chiedono di poter modificare tale numero per modificare l'ordine (per
poter invertire la prima riga con l'ultima, oppure per spostare in alto o in
basso una riga)
Prima di mettermi a gestire anche questa richiesta vi chiedo se esiste una
soluzione già preconfezionata
Eccome se esiste :)
se tu passi a sysField counter=True (nome forse un po’ infelice)
va ad agiungere un campo automatico che si chiama _row_count che si aggiorna
coi trigger.
NB vuoi che il counter sia relativo pero ad una foreignKey (come appunto per un
caso tipico di testata righe) allora dovrai mettere
counter=‘“testata_id” (l’esempio lo copi paro paro dalle righe fattura di
sandbox)
Nella risorsa di grigia poi puoi aggiungere
r.fieldcell('_row_count',counter=True) #hidden=True (andando con l’attributo
counter a specificare che si deve aggiornare quando trascini le righe. Puoi
metterlo anche nascosta come cella)
se vuoi che le righe siano riordinabili la griglia deve avere l’attributo
selfDragRows un modo pratico per farlo è usare l’hook th_view sempre nella
risorsa
def th_view(self,view):
view.grid.attributes.update(selfDragRows=True)
NB:
Ho modificato un pochino sandbox in modo tale che tu possa copiare da lì
Spero di esserti stato utile
Ciao
Francesco
Other related posts: