Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo de Assis

[Resolvido] Logica e exibição de dados em MasterPage, é possível?

Recommended Posts

Boa tarde,

 

Estou desenvolvendo um sistema onde pretendo usar uma MasterPage pra exibir dados de cabeçalho, como "Connors, seja bem vindo. Você logou as 14:38.", mas não conseguei criar nenhuma lógica em MasterPage. É possível, ou terei que criar um ContentPlaceHolder e uma outra página pra englobar esses dados?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu tenho um sistema onde coloco o fluxo das páginas que o cara navegou (Ex: Cadastro > Usuários), e faço isso colocando um panel na MasterPage e no meu código eu vou alimentando este panel com as informações. Será que um panel não te atenderia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho menos de 1 mês com o .NET e nem sei o que faz o Panel, mas o seu código que gerencia o breadcrumb no Panel, fica na própria MasterPage?

Senão, posso alterar esse Panel na Master, pelas páginas internas?

 

Pode me dar um exemplo, se não for pedir demais? http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Só explicando a situação.

Eu venho do PHP e era de costume incluir um arquivo.php no início de cada página do sistema, e em tal arquivo ficavam verificações de sessão, conexão com banco de dados, etc.

 

O que eu queria mesmo, era seguir esse padrão usando MasterPages (enquanto não aprendo um jeito melhor ou o jeito "certo").

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falando de um modo bem grosseiro, um panel é como se fosse uma div, onde se pode agrupar vários outros tipos de controles (labels, buttons, checkboxes, etc).

 

No meu caso, o panel fica na própria MasterPage mesmo, e criei uma classe para "gerenciar" o breadcrumb e escrever as informações dentro do panel.

 

Agora, falando da sua migração de PHP para o .Net... como você terá uma MasterPage, estas verificações que você fazia em um arquivo.php você pode fazer no MasterPage sem problemas, sem precisar trabalhar "includes", e acredito eu que seja até bem mais simples. No caso das conexões com o banco de dados você tem disponível aí pela internet as formas de trabalhar estas conexões utilizando classes, etc.

 

Segue um exemplo da utilização do Panel:

 

MasterPage

 

<asp:Panel ID="pnCaminho" runat="server" />

Código em uma página

 

Private Sub EscreveNoPanel()
 	Dim lblTexto As Label = New Label
 	lblTexto.Text = "Texto de teste no panel pnCaminho"
 	lblTexto.CssClass = "estiloCss"
 	pnCaminho.Controls.Add(lblTexto)
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafael,

Aconteceu algo que já tinha acontecido em outras tentativas minhas, a ID do Panel não é reconhecida.

Também não funciona se eu tentar:

Master.FindControl("pnCaminho").Controls.Add(lblTexto)
Olhando o código fonte da página, vejo a <div id="pnCaminho"></div>, vazia.

 

Segue um print: http://img695.imageshack.us/img695/8097/printvs.jpg

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aconteceu algo que já tinha acontecido em outras tentativas minhas, a ID do Panel não é reconhecida.

Também não funciona se eu tentar:

Master.FindControl("pnCaminho").Controls.Add(lblTexto)
sinistro não achar o Panel...

 

pnCaminho esta dentro de um <asp:ContentPlaceHolder ?

 

se estiver tenta buscar o controle dentro do ContentPlaceHolder

VB

Dim iCph As ContentPlaceHolder = Master.FindControl("cphSearchGrid")
If (Not (iCph) Is Nothing) Then
    Dim iPnl As Panel = iCph.FindControl("pnCaminho")
    If (Not (iPnl) Is Nothing) Then
        'achou'
        iPnl.Controls.Add(lblTexto)
    End If
End If
C#

ContentPlaceHolder iCph = (ContentPlaceHolder)Master.FindControl("cphSearchGrid");
if (iCph != null)
{
    Panel iPnl = (Panel)iCph.FindControl("pnCaminho");
    if (iPnl != null)
    {
         //achou
         iPnl.Controls.Add(lblTexto);
    }
}
OBS.: não testei os códigos, pode ser que necessite algum ajuste, só coloquei a idéia.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eriva, não estou usando ContentPlaceHolder pra esse conteúdo, e minha dúvida é justamente essa, se posso colocar os elementos na Master e manipulá-los da página que foi carregada dentro da Master, ou da própria Master.

 

Outra coisa que pode solucionar meu problema, é eu conseguir usar programação na Master.

O trecho a seguir não funciona e nessa classe o intelisense/autocomplete não funciona, mesmo com o elemento "pnCaminho" existir no HTML da Master. Será que está faltando incluir ou herdar de alguma outra classe?

 

Public Class Site
    Inherits System.Web.UI.MasterPage


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim lblTexto As Label = New Label
        lblTexto.Text = "Texto de teste no panel pnCaminho"
        lblTexto.CssClass = "estiloCss"
        pnCaminho.Controls.Add(lblTexto)

    End Sub

End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso...

 

 

Public Class Site
 	Inherits System.Web.UI.MasterPage

	Private pnCaminho As Panel

	 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

	 	 Dim lblTexto As Label = New Label
	 	 lblTexto.Text = "Texto de teste no panel pnCaminho"
	 	 lblTexto.CssClass = "estiloCss"
	 	 pnCaminho.Controls.Add(lblTexto)

 	End Sub

End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu iniciei um novo projeto de zero, só pra testar, e todos esses exemplos deram certo.

 

Não sei porque no meu projeto tá acontecendo esses erros. Acho que é porque tô fazendo o projeto em paralelo com um profissional de design(layout/html/css) e algo pode ter se perdido acidentalmente no processo.

 

Vou dar o tópico por encerrado, já que é possível fazer o que eu pergutei inicialmente.

 

Muito obrigado a todos! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.