Master page, changer content page
Bonjour, je suis un peu coincé sur la compréhension de la master page
j'ai beau regarder des tuto etc, ca explique toujours "master page d'un coté, content page de l'autre" etc
ce que je cherche à faire est assez banal
changer le contenu de la page affiché quand je clic sur differents éléments d'un menu inseré dans la master page
les pistes que j'ai exploré sans succès, sont les suivantes
- mettre 1 ContentPlaceHolder par "sous page" et jouer avec des visibles, databind et autres
- mettre 1 seul ContentPlaceHolder et essayer de charger une content page dedans ou qq chose comme ca
je pense avoir raté quelque chose dans la compréhension ou l'utilisation de la master page et content page, mais je ne trouve pas quoi
ma master page est la suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <%@ 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>Site CG</title>
<link href="CGCSS.css" rel="stylesheet" type="text/css"/>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body class="Body">
<form id="form1" runat="server" dir="ltr">
<div>
<asp:Menu ID="Menu1" runat="server" onmenuitemclick="Menu1_MenuItemClick">
<Items>
<asp:MenuItem Text="Procédures" Value="Procédures"></asp:MenuItem>
<asp:MenuItem Text="Données" Value="Données"></asp:MenuItem>
</Items>
</asp:Menu>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Proc" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Grid" />
<asp:ContentPlaceHolder id="MainContent" runat="server">
</asp:ContentPlaceHolder>
</div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html> |
mes 2 contents pages sont les suivantes
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Procedures.aspx.cs" Inherits="Procedures" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="BtnProc1" runat="server" Text="Button"
onclick="BtnProc1_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Button ID="BtnProc2" runat="server" Text="Button" />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:Button ID="BtnProc3" runat="server" Text="Button" />
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content> |
et la 2eme
la page est assez chargée, je met juste le début
Code:
1 2 3
| <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server"> |
et enfin le code du menu de la master, qui est donc incomplet...
Code:
1 2 3 4 5 6 7
| protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
if (Menu1.SelectedItem.Text == "Procédures")
{
//blabla
}
} |
si vous avez des idées, je suis tout ouie !
Petite question supplémentaire ...
Comment est-il possible de forcer le contenu du ContentPlaceHolder ?
Par exemple, dans le ContentPlaceHolder de la MasterPage,
j'ai Page1
et je veux Page2,
quand je clique sur le Bouton de la Page1. :?
N'hésitez pas à m'éclairer car j'arrive à changer la sélection (tabulation active), mais pas le contenu correspondant à la tabulation active.
avec ce code dans la méthode du bouton de la Page1 :
Code:
1 2 3
|
Menu Menu1 = (Menu) Master.FindControl("Menu1");
Menu1.Items[1].Selected = true; |
:(
David.