Intercettare pulsante di una pagina da uno usercontrol

lunedì 09 marzo 2009 - 14.03

cicemoi Profilo | Junior Member

Salve,
ho problema! non riesco ad intercettare da uno usercontrol un pulsante presente nella pagina che lo contiene. Quest'ultima è contenuta in una masterPage, perciò ho provato in questo modo

DirectCast(Page.Master.FindControl("btnAvanti"), ImageButton).Visible = True

ma mi da sempre il seguente errore "Object reference not set to an instance of an object" perchè non lo trova!!!!
Cosa posso fare?

Grazie mille
Cinzia

rossimarko Profilo | Guru

Ciao,

prova così. Nella master page esponi una property che da riferimento al tuo controllo:
Public readonly Property RiferimentoControllo as ImageButton Get return tuocontrollo end get End property

Poi per accederci dalla tua pagina basta che punti alla proprietà Master e potrai usare la proprietà senza nessun findcontrol

DirectCast(me.Page.Master, NomeClasseMaster).RiferimentoControllo.Visible = false

Il procedimento non è proprio pulito, perchè in teoria per poter essere riutilizzabile il tuo controllo non dovrebbe avere riferimento alla pagina che lo contiene, ma dovrebbe in questo caso generare un evneto che viene poi intercettato all'interno della pagina per gestire i vari controlli, però almeno cerchiamo di capire perchè non riesce a trovare il riferimento



-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

cicemoi Profilo | Junior Member

allora io nella masterPage ho dichiarato una property in questo modo

Public ReadOnly Property btnAvantiProp() As ImageButton
Get
Return FindControl("btnAvanti")
End Get
End Property

poi nello usercontrol ho fatto in questo modo

DirectCast(Me.Page.MasterPage, MasterPage).btnAvantiProp ecc... ma sembra non riconoscere la property "btnAvantiProp" e da un errore su Me.Page.MasterPage "expression is not a method"
........non ci sto capendo molto.....

rossimarko Profilo | Guru

> Public ReadOnly Property btnAvantiProp() As ImageButton
> Get
> Return FindControl("btnAvanti")
> End Get
> End Property
>

Nella master non hai una variabile btnAvanti?

In modo da poter scrivere

Public ReadOnly Property btnAvantiProp() As ImageButton Get Return btnAvanti End Get End Property

?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

cicemoi Profilo | Junior Member

putroppo no! il pulsante sta nella pagina contenuta nella masterpage che a sua volta contiene lo usercontrol dal quale devo ricercarlo.......

rossimarko Profilo | Guru

Scusami, allora avevo capito il contrario. In questo caso basta che sposti la property nella pagina e dallo user control invece che puntare alla master usa la pagina:
DirectCast(me.Page, NomeClassePagina).RiferimentoControllo.Visible = false
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

cicemoi Profilo | Junior Member

in questo modo

DirectCast(Me.Page, wizardBilancio).btnAvantiProperty.Visible = False

............ma sembra che "wizardBilancio" , che è il nome della partial class della pagina, non lo trova.......dice che non è definito!!!

rossimarko Profilo | Guru

Verifica il namespace dove è contenuta la classe. Usa eventualmente il classview di visual studio (CTRL + SHIFT + C). Magari sono semplicemente due classi in due namespace diversi e non si vedono direttamente
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
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