none
Master Page Aninhadas - Como acessar os objetos da master page ? RRS feed

  • Pergunta

  • Bom dia pessoal,

    tudo bem ?

    Estou tentando utilizar o recurso de master page aninhadas do Visual Studio 2008 porém não esta dando certo. Alguém poderia me ajudar?

    Criei uma master page = MPprincipal, com menu e logotipo

    Criei uma nested master page = MPSub, com um multview com 3 view. Dentro de cada view inseri um contentPlacaHolder e fora do multview inclui outro ContentPlacaHolderRodape. Dessa forma, quando criar a pagina poderei colocar outros objetos dentro de cada view e se precisar, colocar outros objetos após  a view que esta sendo visualizada.

    Criei um web form que herdou a MPSub = Teste.aspx.  No Content ligado ao ContentPlacaHolderRodape, inclui 3 botões para alguns eventos. E no content de cada view, inseri uma frase (para realizar os testes).

    Ao clicar no botão "Consultar" gostaria de acessar o multiview da MPSub e mudar a propriedade ActiveViewIndex para "1", dessa forma mostraria o conteúdo da segunda view. Porém não funcionou.

    Na página Teste.aspx eu inclui :

    <%@ MasterType VirtualPath="~/MP/MPSub.master" %>

    Para que eu pudesse acessar em minha página atual os dados da master page MPSub

    No código do botão "Consultar" tentei:

    protected void btnConsultar_Click(object sender, EventArgs e)

    {   ContentPlaceHolder mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder2");

        if (mpContentPlaceHolder != null)

        {  MultiView mvRelatorio = (MultiView)mpContentPlaceHolder.FindControl("mvRelatorio");

            mvRelatorio.ActiveViewIndex = 1;  }

    }

     Com base nesse link: http://msdn.microsoft.com/pt-br/library/xxwa0ff0.aspx

    Mas não deu certo pois quando chefa no IF o "mpContentPlaceHolder" é null.

     

    Alguém saberia oque estou fazendo de errado ?

    Obrigada

    Patricia


    Patricia
    sexta-feira, 30 de janeiro de 2009 12:26

Respostas

  •  Oi Pessoal

    Oque eu estava fazendo errado, é que estava acessando o ContentPlaceHolder errado.
    Então, segue o código certo para acessar objetos da master page quando estamos utilizando master page aninhadas. Esse código foi inserido no evento on click do botão "Consultar" que esta no web form Teste.aspx:

    //Acessando o ContentPlaceHolder da MPPrincipal 

    ContentPlaceHolder CPH = (ContentPlaceHolder)Master.Master.FindControl("ContentPlaceHolder1");

    //Acessa o Multview da MPSub

    MultiView mvRelatorio = (MultiView)CPH.FindControl("mvRelatorio");

    //Acessa a View

    mvRelatorio.ActiveViewIndex = 1;

    Porém achei que ficava melhor fazer um método na MPSub (que tem o MultView) para acessar diretamente a View. Então coloquei na MPSub:

    //Metodo para alterar a view ativa

    public void AlteraActiveViewIndex(int index)

    {

       mvRelatorio.ActiveViewIndex = index;

    }


    E no web form, evento on click do botão consultar, coloquei

    Master.AlteraActiveViewIndex(1);


    E pronto :) Deu certo.


    Se alguém precisar já esta ai dois exemplos
    T+ pessoal

    Patricia


    Patricia
    • Marcado como Resposta PatriciaOD segunda-feira, 2 de fevereiro de 2009 19:27
    segunda-feira, 2 de fevereiro de 2009 19:23