martes, 27 de julio de 2010

.NET : Comunicación Máster Page y ContentPlaceHolder

Hace poco un compañero de trabajo tenia un problema .
"Queria tener un botón en el Máster Page con el cual al seleccionar el botón invoque una función que se encuentre dentro del ContentPlaceHolder"


Pasos :

1:Crear un Master Page




Codigo Master.


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class EjemploMaster : System.Web.UI.MasterPage

{
//Al crear un evento EventHandeler me permite delegar el metodo que va ser invocado
public event EventHandler Btn_ContentPlaceHolder;

protected void Page_Load(object sender, EventArgs e)
{
}

protected void btn_Click(object sender, EventArgs e)
{
// ir a la funcion Btn_ContentPlaceHolder del ContentPlaceHolder
Btn_ContentPlaceHolder(sender, e);
}

}



2. Pagina1.aspx


<%@ Page Language="C#" MasterPageFile="~/EjemploMaster.master" AutoEventWireup="true" CodeFile="Pagina1.aspx.cs" Inherits="Pagina1" Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/EjemploMaster.master" %>
<%--NOTA IMPORTANTE YA QUE CREO UNA REFERENCIA AL MASTER PAGE--%>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>

Codigo Pagina1.aspx

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Pagina1 : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
//Sirve para invocar al metodo al cual se va acceder
EjemploMaster myMaster;
myMaster = Master;
myMaster.Btn_ContentPlaceHolder += new System.EventHandler(Btn_ContentPlaceHolder);
}

protected void Btn_ContentPlaceHolder(object sender, System.EventArgs e)

{ string mensaje = "<script lenguage='JavaScript'>" +
"alert('Se selecciono la funcion del ContentPlaceHolder')" +
"</script>";
Page.RegisterStartupScript("Mensaje", mensaje);
}

}


Resultado




Descargar Solución

No hay comentarios:

Publicar un comentario