[genropy] Re: modifica del nome di una colonna in modo dinamico
- From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
- To: genropy@xxxxxxxxxxxxx
- Date: Thu, 2 Feb 2017 18:32:00 +0100
Il giorno 02 feb 2017, alle ore 09:26, Alessandro Tufi
<alessandro.tufi@xxxxxxxxx> ha scritto:
Allora
se vuoi cambiare nome della colonna basta che tu metta nella cell il nome
col ^.
mmmhhh.. poi mi appare come nome "^.nome_variabile" , mi sa che non
interpreta il codice
Se invece vuoi cambiare il columnset allora c'è un modo ma più complesso.
Ma te lo dico solo se ti serve ;)
No, pietà, in questo periodo ho bisogno di cose semplic! :-)
Ale
Se aggiorni develop abbiamo fatto qualche modifica alla griglia per
semplificare il tutto.
Da questa versione gli header possono avere il ^ e quindi se passi
name='^myname' lui si comporta bene.
Già che c'eravamo abbiamo anche reso dinamici gli attributi del columnset.
Quindi se fai columnset_pippo='^foo'
funziona e anche gli attributi di stile columnset_pippo_color='^colmio'
Come ulteriore aggiunta e credo serva a Luigi Renna come name in una griglia
possiamo mettere anche delle date
e in questo caso specificare anche un name_format.
se ad esempio mettiamo name_format='EEE d' allora l'header della colonna sarà
il giorno della settimana
abbreviato più il numero di giorno.
Ad esempio : gio 2, ven 3, sab 4 e via dicendo.
Tutti gli esempi sono nel test della baggrid:
https://bitbucket.org/genropy/genropy/src/eb3a87bdb3b3b126e708fe8dba0e2b08af35f484/projects/gnrcore/packages/test15/webpages/gnrwdg/baggrid.py?at=develop&fileviewer=file-view-default
In particolare per header variabile:
def test_9_bagridformula(self,pane):
def struct(struct):
r = struct.view().rows()
r.cell('description',name='^first_header_name',width='15em',edit=True,hidden='^hidden_0')
Per columnset variabile
frame =
bc.contentPane(region='center').bagGrid(frameCode='formule',datapath='.surfaces',
struct=struct,height='300px',fillDown=True,
grid_footer='Totals',
pbl_classes=True,margin='5px',
columnset_ent='^colsetname',
columnset_disc='Discount',
columnset_tot='Totals',
columnset_ent_background='^colsetentbg',
columnset_tot_background='red'
)
Per gli header come data:
def test_13_autorow_date(self,pane):
bc = pane.borderContainer(height='300px')
top = bc.contentPane(region='top')
fb = top.formbuilder(cols=1,border_spacing='3px')
fb.dateTextBox(value='^s_date_base',lbl='Start date')
fb.dataController("""
sd = sd || new Date();
var y = sd.getFullYear();
var m = sd.getMonth();
for (var i=1;i<32; i++){
d = new Date(y,m,i);
if(d.getMonth()!=m){
d = null;
}
genro.setData('s_date_'+i,d);
}
""", sd='^s_date_base',_init=True)
center = bc.contentPane(region='center')
def struct(struct):
r = struct.view().rows()
r.cell('name',description='Name',width='15em',edit=True)
for i in range(1,32):
r.cell('day_%02i' %i, name='^s_date_%i' %i,name_format='EEE d',
hidden='^s_date_%i?=!#v' %i,dtype='N',edit=True)
center.bagGrid(storepath='.store',title='Date
grid',struct=struct,datapath='.mygrid',
addrow='auto',delrow='auto')
Possiamo notare la struct che prepara le 31 colonne e poi al variare della data
i giorni vengono mutati se cambia il mese.
Da notare anche l'opzione addrow='auto',delrow='auto' che fanno si che sia
sufficente avere il focus sulla grid perchè
venga aggiunta una riga e appena una riga è riempita anche per una sola cella
viene agiunta una nuova riga vuota.
Quando la grid perde il focus le righe vuote vengono tolte.
Insomma evita diu usare il + e il - in certe situazioni.
Spero sia chiaro e utile :)
G
Other related posts: