In my MasterPage, I created 2 buttons 'btnMenu1', 'btnMenu2' and a LinkButton 'LinkButton1'. If I click on 'LinkButton1', a ModalPopupExtender will be shown. There are 2 button in ModalPopupExtender, the fist is 'btnTest', the second is 'CancelButton'. In my ContentPage, i created a label 'lblOutput' to show the results. Everything is OK when 1 click 'btnMenu1' or 'btnMenu2', but nothing happens when I click 'btnTest'. I am a newer and I can't solve it. Someone help me please. This is my code:
MasterPage makeup
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<asp:LinkButton ID="LinkButton1" runat="server" Text="Click here to call Popup" />
<ajaxToolkit:ToolkitScriptManager ID="ScriptManager1" runat = "server"></ajaxToolkit:ToolkitScriptManager>
<asp:Panel ID = "pn" runat="server" >
<asp:Button runat = "server" ID="btnTest" Text = "Test" OnClick = "btnTest_Click" />
<asp:Button runat = "server" ID="CancelButton" Text = "Cancel"/>
</asp:Panel>
<ajaxToolkit:ModalPopupExtender runat = "server" ID = "modal" TargetControlID = "LinkButton1" PopupControlID = "pn" BackgroundCssClass="modalBackground" OkControlID="btnTest" CancelControlID="CancelButton" DropShadow="true"/>
<div id="wrapper">
<div id="header">
Header Area
</div>
<div id="menuArea">
<asp:Button ID="btnMenu1" runat="server" Text="Menu 1" OnClick="btnMenu1_Click" />
<asp:Button ID="btnMenu2" runat="server" Text="Menu 2" OnClick="btnMenu2_Click" />
</div>
<div id="mainContent">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<div id="footer">
Footer Area
</div>
</div>
</form>
</body>
</html>
MasterPage code behind:
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 delegate void MasterPageMenuClickHandler(object sender, System.EventArgs e);
public partial class MasterPage : System.Web.UI.MasterPage
{
private string _currentButton;
public string CurrentButton
{
get { return _currentButton; }
set { _currentButton = value; }
}
public event MasterPageMenuClickHandler MenuButton;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnMenu1_Click(object sender, EventArgs e)
{
// Assign value to public property
_currentButton = "One";
// Fire event to existing delegates
OnMenuButton(e);
}
protected void btnMenu2_Click(object sender, EventArgs e)
{
// Assign value to public property
_currentButton = "Two";
// Fire event to existing delegates
OnMenuButton(e);
}
protected virtual void OnMenuButton(EventArgs e)
{
if (MenuButton != null)
{
MenuButton(this, e);
}
}
protected void btnTest_Click(object sender, EventArgs e)
{
// Assign value to public property
_currentButton = "Three";
// Fire event to existing delegates
OnMenuButton(e);
}
}
Default makeup:
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ MasterType VirtualPath="~/MasterPage.master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Label ID="lblOutput" Text = "" runat="server"></asp:Label>
</asp:Content>
Default code behind:
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 _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Master.MenuButton +=new MasterPageMenuClickHandler(Master_MenuButton);
}
void Master_MenuButton(object sender, EventArgs e)
{
lblOutput.Text = string.Format("Button {0} was pressed", Master.CurrentButton.ToString());
}
}