Usuário com melhor resposta
Campos da MasterPage

Pergunta
-
A minha aplicação é aberta em uma página default.aspx, que preenche alguns labels na MasterPage, porém ao mudar de página, através do menu, estes dados desaparecem.
Como fazer para que esses labels não percam seus valores?
'Preenchendo masterPage.
CType(Master, ConMAN).preencheCodUsuario = usu
CType(Master, ConMAN).preencheUsuario = ds.Tables(0).Rows(0)("nom_NomeUsuario") + " " + ds.Tables(0).Rows(0)("nom_Sobrenome")
CType(Master, ConMAN).preencheMalha = ds.Tables(0).Rows(0)("des_Malha")
If ds.Tables(0).Rows(0)("num_ID_TipoDeRede") = 1 Then
CType(Master, ConMAN).preencheRede = "RDA"
Else
CType(Master, ConMAN).preencheRede = "RDS"
End If
CType(Master, ConMAN).idMalha = ds.Tables(0).Rows(0)("num_ID_Malha")
CType(Master, ConMAN).idPermissao = ds.Tables(0).Rows(0)("num_ID_Permissao")
CType(Master, ConMAN).idRede = ds.Tables(0).Rows(0)("num_ID_TipoDeRede")
Sergio Ivanenko
Respostas
-
Olá,
Faça a consulta, guarde o valor em Session.
Verifique no page load se os valores são nulos, se são, faça a consulta e guarde na sessão... se não.. recupere da sessão. Depois preencha os labels.
Ex.: C#
DadosUsuario.cs
public class DadosUsuario
{
public Nome {get; set;}
public Cidade {get; set;}
}
---------------------------------------------------------------------------------------
MasterPage.cs
DadosUsuario usuario
{
get
{
...
return (DadosUsuario)Session["DadosUsuario"];
...
}
set
{
Session["DadosUsuario"] = value;
}
}
Sub Page_Load()
{
if (Session["DadosUsuario"] == null)
{
// Realiza consulta.
// preenche a session com o resultado
// Ex.: Session["DadosUsuario"] = ConsultaDadosCliente();
}
campo1.Text = usuario.Nome;
campo2.Text = usuario.Cidade;
...
...
...
}
Roberto Santos http://blog.robertoosantos.com- Marcado como Resposta Ivanenko sábado, 31 de outubro de 2009 14:19
-
Todas as Respostas
-
Fale,
Na MasterPage coloca seu código dentro do bloco da listagem 1, pois dessa forma você evita que no próximo post da página o conteúdo seja acessado:
If Not IsPostBack Then
End If
Erysson
Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço! -
Oi,
A master page é re-processada a cada página chamada e apenas a página default preenche os labels.
Faça de forma diferente :
1) Crie uma classe no app_code, invente um nome, vamos imaginar "Dados"
2) Crie uma propriedade chamada DadosLabels do tipo dataTable e como readonly
3) O get da propriedade dadosLabels verifica se já existe em sessão uma variável "dadoslabels"
Se existe, devolve ela
Se não existe, lê o datatable do banco, guarda na variável dadoslabels e devolve ela.
4) No page_load da master page preencha o label utilizando os campos da datatable devolvida pela propriedade DadosLabels da classe Dados.
[]'s
Dennes
* Treinamento de ASP.NET 3.5 dia 24/10 - Apenas 12x R$ 70,88 - Inscreva-se em http://www.bufaloinfo.com.br/cursos/aspnet2.asp* Treinamento de Introdução a OO e Framework .NET c/C# dia 31/10 - Apenas 12 R$ 42,53 Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp
Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
http://www.bufaloinfo.com.br
Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp -
Dennes, fiz assim, porém todas as vezes que mudo de página, efetua nova consulta.
MasterPage:
Dim csD As New dadosUsuario
Private Function carregaDados() As DataTable
Dim conn As New SqlConnectionDim usu As String = "c035562" 'Right(User.Identity.Name, 7)
Dim dt As New DataTable
Dim strSQL As Stringconn.ConnectionString = ConfigurationManager.ConnectionStrings(
"CaminhoBD").ToString
strSQL = "SELECT TUsuarios.cod_ID_Usuario, TUsuarios.nom_NomeUsuario, TUsuarios.nom_Sobrenome," _
& " TUsuarios.num_ID_Permissao, TUsuarios.num_ID_TipoDeRede, TMalha.des_Malha," _
& " TUsuarioMalha.num_ID_Malha" _
& " FROM TUsuarios INNER JOIN" _
& " TUsuarioMalha ON TUsuarios.cod_ID_Usuario = TUsuarioMalha.cod_ID_Usuario INNER JOIN" _
& " TMalha ON TUsuarioMalha.num_ID_Malha = TMalha.num_ID_Malha" _
& " WHERE (TUsuarios.cod_ID_Usuario = '" & usu & "')" _
& " AND (TUsuarioMalha.tag_MalhaPadrao = 1)"Dim da As New SqlDataAdapter(strSQL, conn)
da.Fill(dt)If dt.Rows.Count = 0 Then
MsgBox("Usurio no cadastrado.", MsgBoxStyle.Information, "ConMAN")
Response.Redirect(http://cemignet/)
End IfReturn dt
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
csD.dtLabels = carregaDados()
End IfvalorLabels()
End Sub
Private Sub valorLabels()Me.lbl_CodUsuario.Text = csD.dtLabels.Rows(0)("cod_ID_Usuario")
Me.lblNomeUsuario.Text = csD.dtLabels.Rows(0)("nom_NomeUsuario") + " " + csD.dtLabels.Rows(0)("nom_Sobrenome")
Me.lbl_Malha.Text = csD.dtLabels.Rows(0)("des_Malha")If csD.dtLabels.Rows(0)("num_ID_TipoDeRede") = 8 Then
Me.lbl_Rede.Text = "RDS"
Else
Me.lbl_Rede.Text = "RDA"
End IfMe.lbl_IDMalha.Text = csD.dtLabels.Rows(0)("num_ID_Malha")
Me.lbl_IDPermissao.Text = csD.dtLabels.Rows(0)("num_ID_Permissao")
Me.lbl_IDRede.Text = csD.dtLabels.Rows(0)("num_ID_TipoDeRede")
End Sub
Classe:
Public Class dadosUsuario
Private dt As DataTable
Public Property dtLabels() As DataTable
Get
Return dt
End Get
Set(ByVal value As DataTable)
dt = value
End Set
End PropertyEnd Class
- Editado Ivanenko segunda-feira, 26 de outubro de 2009 21:41
-
Olá,
Faça a consulta, guarde o valor em Session.
Verifique no page load se os valores são nulos, se são, faça a consulta e guarde na sessão... se não.. recupere da sessão. Depois preencha os labels.
Ex.: C#
DadosUsuario.cs
public class DadosUsuario
{
public Nome {get; set;}
public Cidade {get; set;}
}
---------------------------------------------------------------------------------------
MasterPage.cs
DadosUsuario usuario
{
get
{
...
return (DadosUsuario)Session["DadosUsuario"];
...
}
set
{
Session["DadosUsuario"] = value;
}
}
Sub Page_Load()
{
if (Session["DadosUsuario"] == null)
{
// Realiza consulta.
// preenche a session com o resultado
// Ex.: Session["DadosUsuario"] = ConsultaDadosCliente();
}
campo1.Text = usuario.Nome;
campo2.Text = usuario.Cidade;
...
...
...
}
Roberto Santos http://blog.robertoosantos.com- Marcado como Resposta Ivanenko sábado, 31 de outubro de 2009 14:19
-
-
Então marca minha resposta como certa ué... :)
Roberto Santos http://blog.robertoosantos.com -