[genropy] Re: Implementare la view standard

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy <genropy@xxxxxxxxxxxxx>
  • Date: Wed, 19 Oct 2016 12:25:16 +0200


Il giorno 19 ott 2016, alle ore 12:21, gianpiero.fontana@xxxxxxxx ha scritto:

Altra domanda:
e se invece di usare gli "id" volessi usare un altro campo key , per esempio 
il codice del cliente (codice) 


In una grid puoi fare in modo di ricopiare in una locazione dello store 
qualunque colonna della riga selezionata.

ad esempio 
grid_selected_codice='riga_corrente.codice',grid_selected_cap='riga_corrente.cap'

e via dicendo.


G

Grazie

----Messaggio originale----
Da: giovanni.porcari@xxxxxxxxx
Data: 18-ott-2016 14.55
A: "genropy"<genropy@xxxxxxxxxxxxx>
Ogg: [genropy] Re: Implementare la view  standard


Il giorno 18 ott 2016, alle ore 12:05, gianpiero.fontana@xxxxxxxx ha 
scritto:

Buongiorno,

Avrei bisogno di mettere sotto la lista iniziale standard (costruita con un 
table handler) un'altra lista  e bloccare a metà la lista di default 
(l'esigenza è fare con un click la selezione del record e sotto 
visualizzare un'altra griglia con altre informazioni legate al cliente).
La  richiesta riguarda la possibilità di dividere il container standard 
fornito dal tablehandler (.... class View(BaseComponent): 

Grazie


Ciao

per fare quello che desideri ti suggerisco di creare una pagina nelle 
webpages invece 
di utilizzare la pagina standard sys/thpage.

Quindi nel tuo package creerai in webpages una pagina 'dettaglio_cliente.py'
e nel menù metterai una  riga che dica
xxx.webpage('Dettaglio Cliente', path='dettaglio_cliente')

Il testo della pagina è questo :

—————————========================--------------
# -*- coding: UTF-8 -*-
from gnr.core.gnrdecorator import public_method

class GnrCustomWebPage(object):
    py_requires='public:Public,th/th:TableHandler' 
    #importo public che mi fornisce una cornice standard per le pagine 
applicativa e tablehandler 
    
    def main(self,root,**kwargs):
        framebc = 
root.rootBorderContainer(datapath='main',title='!![it]Gestione Clienti') 
        
self.clientiPane(framebc.contentPane(region='top',height='50%',splitter=True))
        self.fatturePane(framebc.contentPane(region='center'))

    def clientiPane(self,pane):
        
pane.dialogTableHandler(table='fatt.cliente',virtualStore=True,extendedQuery=True,
                                grid_selectedPkeys='main.clienti_pkeys')

    def fatturePane(self,pane):
        
pane.plainTableHandler(table='fatt.fattura',nodeId='fattureClientiSelezionati',
                                condition='$cliente_id IN :cl_pkeys',
                                condition_cl_pkeys='^main.clienti_pkeys')


—————————========================———————

Noterai che in pratica viene fatto un borderContainer nel cui Top  si mette 
un dialogTableHandler
sui clienti e nel center un plainTableHandler sulle fatture.

Noterai anche che nel tableHander dei clienti c'è un attributo 
'grid_selectedPkeys='main.clienti_pkeys'
che in fa in modo che al path main.clienti_pkeys venga di volta in volta 
messa una stringa con gli id
delle righe correntemente selezionate.

Nel plainTableHandler delle fatture c'è invece una condition='$cliente_id IN 
:cl_pkeys',
e  condition_cl_pkeys='^main.clienti_pkeys' in modo tale che ogni volta che 
cambiano le righe selezionate
nella grid dei clienti si aggiorni la grid delle fatture.


Se hai dubbi chiedi pure


G






Giovanni Porcari
giovanni.porcari@xxxxxxxxx




Other related posts: