Masterpage

lunedì 04 settembre 2006 - 17.33

gandalf_03_75 Profilo | Junior Member

Ciao a tutti volevo chiedervi una dritta.
Ho creato un'applicazione web facendo uso della masterpage

----------------------------------------------------------------------------

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="Site" %>

<!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>
<link rel="stylesheet" href="StyleSheet.css" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="main" cellspacing="0" cellpadding="0">
<tr class="header">
<td colspan="2" class="header"/>
</tr>
<tr valign="top">
<td rowspan="2" class="sidebar" id="link" runat="server">
<asp:Panel ID="pnlLink" runat="server" Height="50px" Width="125px">
<a href="DVD.aspx">Lista DVD</a>
<br />
<br />
<a href="DVD.aspx">Gestione DVD</a>
</asp:Panel>
</td>
<td class="body">
<asp:contentplaceholder id="cplh1" runat="server">
</asp:contentplaceholder>
</td>
</tr>
<tr>
<td class="footer">
<asp:label id="Footer" font-italic="true" text="Copyright ....." runat="server" />
</td>
</tr>

</table>
</div>
</form>
</body>
</html>

----------------------------------------------------------------------------

Il mio problema e' che una volta che sono per esempio sulla pagina Default.aspx nn riesco a risalire ai controlli presenti nella masterpage per rederli visibili o meno.

Avreste qualche idea??

Grazie
Per i paurosi il futuro resterà sconosciuto, per i deboli sarà irraggiungibile, per gli incoscienti offrirà nuove opportunità.

Ciciu Profilo | Senior Member

Ciao.
Immagina di avere sulla MasterPage una Label che si chiama Label1.

Label l = (Label)Master.FindControl("Label1");
l.Text = "prova";

Questo dovrebbe bastare...

Ciao - Fabio
Fabio G

gandalf_03_75 Profilo | Junior Member

Innanzitutto grazie per l'intervento.
Ho provato cosi


Panel p = (Panel) Master.Page.FindControl("pnlLink");
p.Visible=true;

ed ottengo questo errore

Object reference not set to an instance of an object.

Grazie ancora
Per i paurosi il futuro resterà sconosciuto, per i deboli sarà irraggiungibile, per gli incoscienti offrirà nuove opportunità.

Ciciu Profilo | Senior Member

Prova questo :


Panel p = (Panel) Master.FindControl("pnlLink");
p.Visible = true;

Fabio G

freeteo Profilo | Guru

ciao,
il problema è che nella master i controlli sono sotto al controllo form (che se non erro è il controllo di indice 0) e quindi il punto è che dovresti farti una funzione ricorsiva che ti cerchi quel controllo.
Io ti consiglio 1a soluzione piu simpatica e "pulita" ovvero dare una proprieta' booleana alla MasterPage che ti dica il visible (ovviamente per tutti quelli che ha senso), e andare dalla pagina figlia a settare il valore di quella proprieta'...

Tradotto in codice:

# nella master :

public partial class MasterPage : System.Web.UI.MasterPage { private bool xPnlVisible; public bool PnlVisible { get { return xPnlVisible; } set { xPnlVisible = value; } } protected void Page_Load(object sender, EventArgs e) { miopannello.Visible = xPnlVisible; ....


e nella figlia la setti chiamando:

((MasterPage)this.Master).PnlVisible = false;

il cast ti serve x dirgli che il tipo della tua master è quello tuo, ovvero con la proprieta'...
Io farei cosi', cosi' evito rotture di scatole inutili, e in piu' posso fare altri controlli che mi interessano quando la proprieta' viene valorizzata....
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

gandalf_03_75 Profilo | Junior Member

Ciao Matteo grazie per l'aiuto.
Ho provato a seguire le tue indicazioni ma quando richiamo la master
dalla figlia con la riga di codice

---------------------
((MasterPage)this.Master).PnlVisible = false;
---------------------

non mi vede la proprieta pubblica PnlVisible.


Grazie di nuovo
Per i paurosi il futuro resterà sconosciuto, per i deboli sarà irraggiungibile, per gli incoscienti offrirà nuove opportunità.

freeteo Profilo | Guru

mi sembra strano, it poso le 2pagine che da me funzionano correttamente, da te si vede il pannello?
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5