97 messaggi dal 04 ottobre 2004
Ciao a tutti,
sapete se esiste un sistema per recuperare il padre/nonno di un controllo contenuto in una serie di altri controlli senza dover fare Parent.Parent e così via?

Siccome il mio controllo è inserito in più controlli, mi piacerebbe poter recuperare il 1° contenitore della serie senza dover scrivere una sfilza di Parent.

Grazie
Daniele
Modificato da milaus1979 il 27 giugno 2005 17.17 -
Forse lo #706 può fare al caso tuo...

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
potresti farti un metodo riutilizzabile a cui passi il controllo, ed in un ciclo iterativo ti restituisce il nonno

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
97 messaggi dal 04 ottobre 2004
In effetti è una bella idea, non ci avevo pensato. Provo e ti faccio sapere, sinceramente speravo esitesse un metodo ad hoc.
Potrebbe eessere una cosa del genere quella che intendi?:

private Page getParent(Page pagina){

if(pagina.parent != null)
{
Page tmpPage = getParent(pagina.Parent);
tmpPage = null;
}
else
{
      return pagina;
}
}


ora è tardi esono sfatto, domani mattina ci provo.

ciao Daniele

P.s. in risposta a Ricky, quello script lo avevo già visto, solo che quello va bene al contrario, io invece vorrei richiamare una proprietà che si trova sulla pagina, quindi penso di non poter far altro di salire attraverso i Parent, comunque provo anche quello, magari il findControll funziona anche all'indietro.

P.P.S: Non esiste un sistema per fare in modo di utilizzare una mia proprietà che ho nella pagina come si utilizza la famosa property isPostBack? Che funziona ovunque anche da dentro i controlli?
Modificato da milaus1979 il 27 giugno 2005 20.58 -
Rispondo al P.P.S.

Occorre creare una classe che derivi da System.Web.UI.Page e che funga da Page Controller per le pagine container (ovvero una nuova classe base che sostituisca la classe Page). In questa nuova classe è a questo punto possibile definire le proprietà custom ed estendere l'interfaccia. Ovviamente la proprietà Page (di tipo System.Web.UI.Page) degli user control annidati nella pagina va poi castata al nuovo tipo per poter accedere completamente all'interfaccia della classe derivata (che nell'esempio di seguito è stata definita col nome MyPage).

Ecco l'esempio esplicativo. MyPage deriva da Page e funge da Page Controller. MyPage non è una classe code-behind, ma la sua classe base, ovvero la classe che estende l'interfaccia di Page e da cui derivano le classi delle pagine ASPX.

public class MyPage : System.Web.UI.Page
{
private string _myProperty;

public string MyProperty
{
get { return _myProperty; }
set { _myProperty = value; }
}
}


Nell'ambito del controllo (this rappresenta per esempio l'istanza di uno user control) è possibile accedere alla proprietà in questo modo:

((MyPage)this.Page).MyProperty = "Hello World!";
string hello = ((MyPage)this.Page).MyProperty;


Come si può vedere, occorre fare un cast se si vuole accedere alla proprietà MyProperty di MyPage.

Spero di avere chiarito i tuoi dubbi.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
97 messaggi dal 04 ottobre 2004
MITICO!!!

Pensa che la mia struttura era già come dicevi, ho una MasterPage che eredita da System.Web.UI.Page, e poi la mia pagina ASPX eredita dalla mia classe.
Ero ad un pelino dalla soluzione, solo che non mi sono illuminato abbastanza per poter mettere un this.Page  .

Io mettevo
((MyPage)Parent.Parent.Parent.Parent).myProperty, invece era molto più semplice.

grazie mille
ciao Daniele

P.s: ora vado a postare il mio codice sullo script di ieri di Ricciolo, ho preso spunto da li per controllare se qualcuno ha premuto il tasto "aggiorna"
Quando una soluzione è la più semplice, vuol dire che è quella giusta...

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.