none
Executar Evento "Load" da pagina filha RRS feed

  • Pergunta

  • Bom dia.

    Tenho uma master page e em uma das paginas filhas preciso que o evento Load seja executado toda vez. No meu caso ele só está executando uma vez. Quando volto nesta janela ele não entra mais nesta função. Como faço para acertar isto?

    Att.

    Teles

    segunda-feira, 23 de janeiro de 2012 13:16

Respostas

  • Na verdade as páginas vão usar a Master. As páginas que usam a Master vão herdar da classe base.

    ClassBase:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    /// <summary>
    /// Summary description for ClasseBase
    /// </summary>
    public class ClasseBase : System.Web.UI.Page
    {
        protected override void OnPreLoad(EventArgs e)
        {
            
        }
    }
    

    MasterPage:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class MasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
    
    

    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <asp:ContentPlaceHolder id="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        Master Page
            <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
            
            </asp:ContentPlaceHolder>
        </div>
        </form>
    </body>
    </html>
    
    



    Página que usa a MasterPage e herda da classe Base:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class PaginaQueHerdaDaMaster : ClasseBase 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    }
    

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" 
    AutoEventWireup="true" CodeFile="PaginaQueHerdaDaMaster.aspx.cs" Inherits="PaginaQueHerdaDaMaster" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    </asp:Content>
    
    
    

    Veja o evento da pagina base sendo executado:

     

    A outra opção que dei funciona também.


    --
    Marque as respostas e ajude a melhorar a busca do fórum.

    • Editado Paulo César Viana segunda-feira, 23 de janeiro de 2012 16:24
    • Sugerido como Resposta EvandroAS segunda-feira, 23 de janeiro de 2012 16:31
    • Marcado como Resposta Teles segunda-feira, 23 de janeiro de 2012 16:37
    segunda-feira, 23 de janeiro de 2012 16:21

Todas as Respostas

  • Cria uma classe base (e trate o Load) e faça com que sua Master herde dela.

    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    segunda-feira, 23 de janeiro de 2012 13:18
  • Por favor, me dê exemplos.

     

    segunda-feira, 23 de janeiro de 2012 15:56
  • Na verdade as páginas vão usar a Master. As páginas que usam a Master vão herdar da classe base.

    ClassBase:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    /// <summary>
    /// Summary description for ClasseBase
    /// </summary>
    public class ClasseBase : System.Web.UI.Page
    {
        protected override void OnPreLoad(EventArgs e)
        {
            
        }
    }
    

    MasterPage:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class MasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
    
    

    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <asp:ContentPlaceHolder id="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        Master Page
            <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
            
            </asp:ContentPlaceHolder>
        </div>
        </form>
    </body>
    </html>
    
    



    Página que usa a MasterPage e herda da classe Base:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class PaginaQueHerdaDaMaster : ClasseBase 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    }
    

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" 
    AutoEventWireup="true" CodeFile="PaginaQueHerdaDaMaster.aspx.cs" Inherits="PaginaQueHerdaDaMaster" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    </asp:Content>
    
    
    

    Veja o evento da pagina base sendo executado:

     

    A outra opção que dei funciona também.


    --
    Marque as respostas e ajude a melhorar a busca do fórum.

    • Editado Paulo César Viana segunda-feira, 23 de janeiro de 2012 16:24
    • Sugerido como Resposta EvandroAS segunda-feira, 23 de janeiro de 2012 16:31
    • Marcado como Resposta Teles segunda-feira, 23 de janeiro de 2012 16:37
    segunda-feira, 23 de janeiro de 2012 16:21
  • O Paulo, como sempre, deu um exemplo perfeito pra você, Teles.

     


    Evandro Aguiar
    http://wta3.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh
    • Editado EvandroAS segunda-feira, 23 de janeiro de 2012 16:32
    segunda-feira, 23 de janeiro de 2012 16:31
  • Funcionou. Valeu!!

    Obrigada!!

    segunda-feira, 23 de janeiro de 2012 16:38
  • Boa tarde.

    Só estou abrindo este post novamente, porque esta rotina não está funcionando.  A Rotina so funciona na primeira vez.

    Explicando mais detalhadamente:

    Tenho a MainPage e duas paginas filhas.  A Pagina filha 1 tem a interface do relatórios e pagina 2 tem um componente que mostra o resultado do relatorio.

    Estando na pagina 2, clico no botão voltar e volto para a pagina1. Executo o relatorio novamente, ele chama a pagina 2 sem passar pela rotina "Page_Load" da pagina 2, ou seja, ele apresenta o resultado do relatorio anterior. Somente clicando no botão Refresh ele atualiza a pagina 2 e mostra o resultado correto.

    Como corrigir isto?

    Att.

    Teles

    terça-feira, 31 de janeiro de 2012 16:34
  • Como é o seu "voltar"?? Você faz um Response.Redirect? Usar a propriedade PostBackUrl de algum LinkButton???
    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    terça-feira, 31 de janeiro de 2012 16:39
  • Paulo Cesar, boa tarde.

    Uso o botão Voltar do Internet Explorer.

    terça-feira, 31 de janeiro de 2012 16:57
  • Ai complica né cara. O botão voltar do brownser é um problema sério.
    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    terça-feira, 31 de janeiro de 2012 17:00
  • Oi Paulo.

    Se eu conseguisse abrir a Pagina 2 em uma nova janela do browser seria o ideal.

     

    A Pagina 1 tem uma interface em silverlight que chama a pagina 2 desta forma:

    System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("StiWebViewerSL.aspx?IdRelatorio=" + IdRelatorio.ToString(), UriKind.Relative));

    Att.

    Teles

    terça-feira, 31 de janeiro de 2012 17:20