[genropy] Re: Implementare la view standard

  • From: Giovanni Porcari <giovanni.porcari@xxxxxxxxx>
  • To: genropy <genropy@xxxxxxxxxxxxx>
  • Date: Tue, 18 Oct 2016 14:55:57 +0200


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



Other related posts: