Comunicazione master page - content page

giovedì 01 luglio 2010 - 17.47

pishta Profilo | Newbie

Salve a tutti ho il seguente problema che magari per molti sarà banale.

Ho una master page Users.Master che contiene una dropdownlist. Io voglio che questa ddl sia visibile nella master page solo quando la content page è Default.aspx.

Come posso fare? grazie mille.

Gluck74 Profilo | Guru

la rendi non visibile di default.
Poi solo nella pagina Default.aspx, nel Page_Load, inserisci questo codice:

((<classe master>)this.Page.Master).ddlMaster.Visible = true;

dove <classe master> è il nome della classe della tua masterpage che trovi in masterpage.master.cs

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

pishta Profilo | Newbie

grazie mille, solo che ora mi da un errore sul codice del default.aspx

((<classe MAster>)this.Page.Master).ddlMaster.Visible = true;

è inaccessibile a causa del livello di protezione



Gluck74 Profilo | Guru

mi scrivi la riga precisa che ti da errore? proprio quella che viene eseguita

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

pishta Profilo | Newbie

dunque nella pagina Default.aspx ho messo nel metodo Default_Load

((<Users>)this.Page.Master).ddlCopiAlimento.Visible = true; (qui mi dice che è inaccessibile a causa del livello di protezione)


nella master page Users.Master nel metodo Users_Load ho messo

ddlCopiaAlimento.Visible = false;

Gluck74 Profilo | Guru

devi sostituire la scritta "<Users>" con il nome della classe che trovi nel file masperpage.master.cs
ad esempio se trovi la classe come questa:
public partial class PostVendita_MasterPage : System.Web.UI.MasterPage

dovrai scrivere:
((PostVendita_MasterPage)this.Page.Master).ddlCopiAlimento.Visible = true;

senza i segni "<>"

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

pishta Profilo | Newbie

si scusa in realtà facevo esattamente

((Users)this.Page.Master).ddlCopiaAlimento.Visible = true;

ma continuo ad avere quel msg di errore.

Gluck74 Profilo | Guru

sei sicuro che la tua masterpage si chiammi Users?????
mi sembra strano


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

pishta Profilo | Newbie

si, dunque ho risolto così

la mia master page è definita così

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

ho risolto al contrario impostando, nelle due pagine in cui non avevo bisogno della ddl, coì

DropDownList CpAlimenti = (DropDownList)Master.FindControl("ddlCopiaAlimento");
CpAlimenti.Visible = false;

in questo modo ho reso invisibile il controllo nella pagina dove non volevo che apparisse..


Grazie mille!!

Gluck74 Profilo | Guru

Probabilmente il nome "Users" assegnato ad una pagina master può dare fastidio.
ti consiglio comunque di cambiare il nome, ad esempio
public partial class Users_Master : System.Web.UI.MasterPage
oppure assegnare un namespace.

Ho visto che hai scoperto l'altro modo di recuperare un controllo, ovvero:
this.page.master.FindControl("nomecontrollo")
Ti consiglio di mettere un accorgimento però, perché, in casi di presenza di contenitori (namingContainer), non troveresti il controllo:

DropDownList CpAlimenti = (DropDownList)Master.FindControl("ddlCopiaAlimento"); if (CpAlimenti != null) CpAlimenti.Visible = false;

Inoltre, in questo modo, puoi fare come ti ho detto, ovvero di nascondere sempre e mettere SOLO nella default.aspx il codice con "true":
DropDownList CpAlimenti = (DropDownList)Master.FindControl("ddlCopiaAlimento"); if (CpAlimenti != null) CpAlimenti.Visible = true;

ciao


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

pishta Profilo | Newbie

Ok in effetti non avevo vagliato il fatto che il nome Users che avrebbe potuto dare problemi.

Ok farò come mi hai suggerito. Grazie mille. Puntuale e preciso.

Gluck74 Profilo | Guru

meno male che mi hai detto preciso....... c'é chi mi dice pignolo!!!!
ha ha ha ha ha

Grazie per il complimento

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5