Ir para conteúdo

POWERED BY:

Arquivado

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

Kaolapso

Menu em WebControl

Recommended Posts

Pessoal,

 

Criei um menu dentro de um componente webcontrol e debugando a página vi que ele é carregado logo após o Page_Load (até aí tranquilo). Só que depois do page load da minha página, tenho a rotina que valida o usuário e executa um novo select para carregar o menu de acordo com suas permissões, a questão é que não sei recarregar o menu depois disso. Tentei o comando Page_Load() do webcontrol mas não aconteceu nada. Alguém tem ideia de como resolver isso?

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o preenchimento do menu dentro do Page_load do controle que deve funcionar.

 

Eu consegui fazer funcionar parcialmente, mesmo utilizando o webcontrol. Mas o componente perde as propriedades de estilo. Vou postar aqui para vocês poderem entender melhor:

 

primeiro os dados do meu webcontrol, wucMenu.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="wucMenu.ascx.cs" Inherits="UsuControl.wucMenu" %>

 

<asp:Menu ID="menu" DataSourceID="xmlDataSource" runat="server"

BackColor="#006699" DynamicHorizontalOffset="2" Font-Names="Verdana" Font-Size="10" style="text-align: left; margin-left :5px"

ForeColor="#ffffff" StaticSubMenuIndent="10px" StaticDisplayLevels="1" Orientation = "Horizontal" Target ="ifrPrincipal" >

<DataBindings>

<asp:MenuItemBinding DataMember="MenuItem" NavigateUrlField="NavigateUrl"

TextField="Text" ToolTipField="ToolTip" TargetField="Target" />

</DataBindings>

<StaticSelectedStyle BackColor="#FFCC66" />

<StaticMenuItemStyle HorizontalPadding="65px" VerticalPadding="2px" />

<DynamicMenuStyle BackColor="#006699" />

<DynamicSelectedStyle BackColor="#FFCC66" />

<DynamicMenuItemStyle HorizontalPadding="65px" VerticalPadding="2px" />

<DynamicHoverStyle BackColor="#003366" Font-Bold="False" ForeColor="White"/>

<StaticHoverStyle BackColor="#003366" Font-Bold="False" ForeColor="White" />

</asp:Menu>

 

 

<asp:XmlDataSource ID="xmlDataSource" TransformFile="~/TransformXSLT.xsl"

XPath="MenuItems/MenuItem" runat="server"/>

 

wucMenu.ascx.cs:

namespace UsuControl

{

public partial class wucMenu : System.Web.UI.UserControl

{

public void Page_Load(object sender, EventArgs e)

{

 

DataSet dsMenu = null;

dsMenu = new DataSet();

 

Configuracao.Data.Menu wbMenu = null;

 

if (Session.Count == 0)

{

wbMenu = new Configuracao.Data.Menu(2, "CAIO");

}

else

{

wbMenu = new Configuracao.Data.Menu(Int32.Parse(Session["UsuarioCodigo"].ToString()), Session["UsuarioLogin"].ToString());

}

 

 

dsMenu = wbMenu.criaMenu();

dsMenu.DataSetName = "Menus";

dsMenu.Tables[0].TableName = "Menu";

DataRelation relation = new DataRelation("ParentChild", dsMenu.Tables["Menu"].Columns["MNU_IDE"], dsMenu.Tables["Menu"].Columns["MNU_PAR_IDE"], true);

relation.Nested = true;

dsMenu.Relations.Add(relation);

 

xmlDataSource.Data = dsMenu.GetXml();

 

}

 

}

}

 

Tenho minha página inicial, chamada default.aspx

<body>...

<td align="center">

<div id="divMenu">

<uc1:wucMenu ID="wucMenu1" runat="server" />

</div>

</td>

Em default.aspx.cs tenho:

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

wucMenu1.Visible = false;

}

}

 

protected void btnLoginOK_Click(object sender, EventArgs e)

{

Codigo = dataUsuario.validarUsuario(modelUsuario);

if (Codigo > 0)

{

dadosUsuario = Usuario.CarregaUsuario(Codigo);

 

Session.Add("UsuarioCodigo", dadosUsuario.Codigo);

Session.Add("UsuarioLogin", dadosUsuario.Sigla);

Session.Add("UsuarioNome", dadosUsuario.NomeCompleto);

Session.Add("UsuarioTipo", dadosUsuario.Tipo);

Session.Add("UsuarioEmail", dadosUsuario.Email);

 

wucMenu1.Page_Load(null, null); // aqui eu passo null, null porque não sei o que passar mas funcionou

wucMenu1.Visible = true;

 

updPagina.Update();

}

}

 

Quando eu clico no botão de login, a página faz tudo certo, porém, ao carregar o webcontrol com o menu que o usuário tem permissão ele não carrega os dados definidos no wucMenu.ascx. Existe alguma forma de preservar isso ou estou chamando o método errado (wucMenu1.Page_Load(null, null)) quando tenho as informações de usuário e preciso recarregar o menu?

Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Ivan,

 

Tentei mas não funcionou. Eu não sei se uma alternativa seria só carregar o controle depois do click no botão de login mas não sei como fazer isso. Acho que teria que impedir o carregamento no Load da página e depois exibir ele no click do botão de login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o debug e veja o por que não acontece conforme Você deseja,

Eu debuguei mas ele não estra na parte "gráfica" do componente. Ele executa as consultas e retorna o XML que monta o menu corretamente, somente não traz visualmente correto, como acontece a primeira vez que ele carrega.

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.