none
Risalire agli oggetti dalla master page

    Domanda

  • Ciao a tutti,
    per motivi di design avrei bisogno risalire agli oggetti presenti in una pagina "normale" contenuta all'interno di una master page direttamente dalla master page stessa.
    Ad esempio, la mia pagina .aspx (che si basa su di una master) contiene un GridView.
    Nella pagina master ho un pulsante al cui clic mi servirebbe intercettare il record selezionato nel GridView della pagina contenuta.

    E' possibile fare una cosa del genere?


    Grazie

    Luigi

    martedì 13 marzo 2012 09:27

Risposte

Tutte le risposte

  • Sì è possibile.

    Attenzione però che accedere al contenuto di una pagina dalla master è un errore concettuale, la master non dovrebbe conoscere "chi contiene".

    Puoi usare il pattern mediator
    http://en.wikipedia.org/wiki/Mediator_pattern

    Il concetto è semplice, entrano in gioco 3 attori:
    - produttore: un oggetto che genera un messaggio di un determinato tipo
    - consumatore: un oggetto che intercetta il messaggio
    - messaggio: un oggetto che viene utilizzato per "segnalare un evento" e trasportare dati utili

    Quindi la content page è il produttore, la master page è il consumatore e il messaggio è l'oggetto che contiene i dati relativi alla riga selezionata.

    Matteo Migliore

    Bloghttp://blogs.ugidotnet.org/matteomigliore
    Twitterhttp://twitter.com/matteomigliore
    CodePlex

    • Proposto come risposta Marco Siniscalco martedì 13 marzo 2012 09:57
    • Contrassegnato come risposta Ciupaz martedì 13 marzo 2012 10:00
    martedì 13 marzo 2012 09:52
  • No beh, hai ragione, è un errore concettuale.
    Praticamente avrei dovuto accedere da un pannellino della master al contenuto del GridView contenuto nella "content".
    Alla fine ho spostato tale pannellino direttamente nella pagina di contenuto, dove dovrebbe stare.

    Grazie Matteo per le dritte.

    L

    martedì 13 marzo 2012 10:00
  • L'obiezione di Matteo è corretta.

    Una Master Page è una sorta di template al cui interno si possono caricare una serie di Content Page diverse, che condividono la stessa struttura "esterna". Una Master Page, quindi, dovrebbe essere "agnostica" rispetto alla Content Page che mostra.

    Da quello che hai detto tu, invece, la Master Page si aspetta sempre che la Content Page contenga una GridView, e quindi mi immagino anche sempre lo stesso formato per il suo contenuto.

    Non è questo l'approccio corretto.

    A cosa ti serve recuperare dalla Master Page la riga selezionata? Magari così possiamo proporti una soluzione alternativa.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    martedì 13 marzo 2012 10:01
    Postatore
  • Essenzialmente la master contiene un Div, al cui interno c'è un panel con un paio di pulsanti e una textbox.
    Questo Div, tramite javascript, viene posizionato alla destra del contenuto del GridView presente in più pagine di contenuto.
    In tal modo, in teoria, quando seleziono un record dovrei rendere questo div visibile e l'utente può inserire commenti sul record selezionato.
    A questo punto sorgeva il problema che siccome il div era nella master, l'evento Click del pulsante di salvataggio (presente nella master) doveva risalire al SelectedKey del GridView presente nella pagina di contenuto.

    Ma è effettivamente un approccio sbagliato, e poi dovrei gestirmi anche tutti gli effetti del codice javascript, che già non conosco e non ho nemmeno voglia di imparare.

    L

    martedì 13 marzo 2012 10:15
  • Ho capito. Grazie per il chiarimento.

    A presto.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    martedì 13 marzo 2012 10:18
    Postatore