[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: