none
Pegar controle de webform pela master page RRS feed

  • Pergunta

  • Pessoal, precisava pegar controles de um webform, mas atraves do page load da master page. Ja tentei Page.FindControl(idControle) ou

     Page.Controls.OfType<TextBox>() mas sem sucesso. Pelo Page.TemplateControl tambem nao deu..

    Alguem tem alguma dica??

    Obrigado..

    quinta-feira, 1 de agosto de 2013 14:51

Todas as Respostas

  • Por que você não faz o contrário? Pelo o que eu entendi você quer editar um control da masterpage de acordo com um control da content page (pela master page). E se você mudar o control da masterpage de acordo com o control da content page (pela content page), por exemplo:

    No ContentPage PageLoad método

    TextBox masterTxt = (TextBox)Master.FindControl("txt1");
    masterTxt.Text = contentTxt.Text;


    Ao infinito e além!


    • Editado Fabio R. Luz quinta-feira, 1 de agosto de 2013 16:01 reasons
    quinta-feira, 1 de agosto de 2013 16:01
  • Entao, o problema é que utilizando o findcontrol ate mesmo no content page, este retorna null..

    quinta-feira, 1 de agosto de 2013 17:21
  • Olá,

    Você não conseguirá pegar os controles da página que usa a MasterPage de dentro da MasterPage, porque a execução da MasterPage é anterior a execução da página que utiliza a MasterPage.

    Na página que utiliza a MasterPage você consegue pegar controles que estão na MasterPage seguindo estes exemplos: http://msdn.microsoft.com/pt-br/library/xxwa0ff0(v=vs.100).aspx.

    Att

    ___

    Luciano Rieth

    • Sugerido como Resposta Luciano - Rieth quinta-feira, 1 de agosto de 2013 17:27
    quinta-feira, 1 de agosto de 2013 17:26
  • Mas utilizando o findcontrol na mesma pagina que esta o controle, pq eu nao consigo pega-lo?

    Estou dizendo isso pq consegui pegar a pagina (atraves da master page) que ele esta, inclusive consegui visualizar o  controle debugando a aplicacao...Nem mesmo utilizando o find control dentro do page load da pagina que esta o controle eu consigo pega-lo. Queria saber o pq deste comportamento..

    quinta-feira, 1 de agosto de 2013 17:40
  • Entao, o problema é que utilizando o findcontrol ate mesmo no content page, este retorna null..

    Mas utilizando o findcontrol na mesma pagina que esta o controle, pq eu nao consigo pega-lo?

    Estou dizendo isso pq consegui pegar a pagina (atraves da master page) que ele esta, inclusive consegui visualizar o  controle debugando a aplicacao...Nem mesmo utilizando o find control dentro do page load da pagina que esta o controle eu consigo pega-lo. Queria saber o pq deste comportamento..

    Tem certeza que você utilizou: Master.FindControl() e digitou o ID corretamente? Se retornou null é porque você não digitou o nome do control corretamente. É o ID que tem ser digitado, tem certeza que fez isso? O seu objeto da content page, ele é criado em tempo de execução?

    Ao infinito e além!

    sexta-feira, 2 de agosto de 2013 16:33
  • Para voce alterar controles da MasterPage, inclua a diretiva da master em seu webform. 

    Supondo que sua MasterPage se chame Default.Master e seu WebForm se chame Lista.aspx, basta no HTML da pagina Lista.aspx incluir a diretiva:

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

    Agora no code behind da pagina Lista.aspx, recupere o controle da master:

    TextBox tb = (TextBox)this.Master.FindControl("ID_DO_TEXTBOX");

    Abaixo alguns links para voce dar uma olhada:

    Abraços


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    quarta-feira, 7 de agosto de 2013 18:23