Comunicazione tra usercontrol e pagina aspx

giovedì 03 maggio 2012 - 14.10
Tag Elenco Tags  VB.NET  |  .NET 4.0

86Marco Profilo | Expert

Salve,
sto studiando un piccolo progettino e ne ho creato uno molto facile.

Ho una pagina aspx ed un controllo utente da me creato cosi:

211x129 12Kb


al clic del pulsante Button1, faccio eseguire un semplice calcolo di addizione tra a e b, e stampo il risultato in Label3:

662x135 20Kb


tutto funziona alla perfezione.
Ora però il mio problema è un altro.

Dentro la pagina asp.net ho un controllo label (label4).

Come posso fare affinchè quando faccio fare il calcolo il risultato mi venga scritto dentro label4 che sta al di fuori del WebUserControl??

llamanna Profilo | Junior Member

Quello che ti serve fare è aggiornare la porzione di una pagina (la tua label) al click sul bottone.
In questi scenari una possibile soluzione è quella di utilizzare l'UpdateControlPanel.
Qui http://msdn.microsoft.com/en-us/library/bb399001.aspx puoi trovare un ottimo punto di partenza per capire come funziona e quando utilizzarlo.
Laura.
http://lauralamanna.wordpress.com/

andrestu Profilo | Expert

dallo user control (code-behind) puoi cercare la label richiamando il metodo findcontrol sulla proprietà Page.

Label miaLabel = (Label)Page.FindControl("IDlabel");

oppure puoi creare nella pagina una proprietà che espone la label in questione, e dallo user control fai il cast della proprietà page al tipo della pagina, a questo punto una volta che hai l'oggetto page tipizzato trovi anche la proprietà che fa riferimento alla label... forse esiste qualche direttiva nello usercontrol che "tipizza" il riferimento a page, questo non lo so è soltanto una supposizione...

diciamo che la prima soluzione è più sbrigativa

martinez Profilo | Senior Member

Ciao

Se stai ancora cercando la soluzione al problema ti espongo il mio modo di procedere:

Abitualmente mi creo nel code-behind dello user-control delle proprietà pubbliche e private relative al tipo di oggetto che poi voglio recuperare ad esempio nel tuo caso supponiamo ti interessi un intero avrò quindi:

private int _Somma = 0; public int Somma { get { return _Somma; } set { _Somma = value; } }

a questo punto nell'evento click del pulsante che si occpua del calcolo eseguo la somma assegnando a _Somma il suo valore e copiando tale valore nella label3 del tuo esempio ...

protected void btnInvia_Click(object sender, ImageClickEventArgs e) { _Somma = int.Parse(text1.Text.ToString()) + int.Parse(text2.Text.ToString()); label3.text = _Somma.ToString(); }

A questo punto semplicemente dal code behind della pagina dove ho l'user control non mi resta che richimare la proprietà Somma per raggiungere il mio scopo:

// Nella pagina aspx ho registrato il mio user control <%@ Register Src="../Controllo.ascx" TagName="Controllo" TagPrefix="uc1" %> // che richiamo poi in questo modo: <uc1:Controllo ID="myControl" runat="server" /> // nel code behind della pagina aspx ottengo il valore della somma semplicemente così: this.LabelDellaPaginaAspx.Text = myControl.Somma.ToString();

Fammi sapere ciao!
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5