Controlli dinamicamente caricati: gestione loro eventi

martedì 06 settembre 2011 - 17.53
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Visual Studio 2010

mouro Profilo | Newbie

ciao
carico nella mia pagina aspx dei componenti ascx
ad esempio

codice:
ASCXlist.Add("/Admin/PrenotaOnline/ASCX/Seasons.ascx") ASCXlist.Add("/Admin/PrenotaOnline/ASCX/Arrangements.ascx") Dim UControl As Control PlaceHolder_UC.Controls.Clear() For Each l As String In ASCXlist UControl = New Control UControl = CType(LoadControl(l), UserControl) PlaceHolder_UC.Controls.Add(UControl) Next


questi componenti ascx sollevano degli eventi che devo intercettare nella aspx.
Non so come fare.

Avendo caricato i componeneti dinamicamente non so DOVE scrivere il loro codice, come li intercetto?

grazie

Gluck74 Profilo | Guru

sono eventi tutti diversi? o riesci a ricondutte il tutto ad un evento?

Mi spiego.

se riesci a determinare una interface base (scrivo in similcodice):
interface myControl { public Event Intercettami }
allora puoi costruire tutti i tuoi controlli in modo da implementare la interface.
Facendo questo dopo il load puoi attaccare l'evento:
UControl = New Control UControl = CType(LoadControl(l), UserControl) (UControl as myInterface).Intercettami += new gestoreEvento(......)
scusa se ho mischiato un po di C#, ma spero di essermi spiegato.
Questa è una soluzione semplice se riesci a ricondurre tutto su una interface

La soluzione completa la puoi trovare cercando su internet come si implementano i Patterns Strutturali "Bridge" o "Adapter" (forse il tuo caso si adatta meglio al Bridge)

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.

mouro Profilo | Newbie

si si era tutto ricondotto ad un evento
e GRAZIE! mi hai risolto un problema

ho creato un'interfaccia stupidissima
Public Interface IRefreshUC Event RefreshUC() End Interface

nei vari ascx l'ho implementata
Partial Class XXX Inherits System.Web.UI.UserControl Implements IRefreshUC Public Event RefreshUC() Implements IRefreshUC.RefreshUC


e poi nell'aspx
For Each l As String In ASCXlist UControl = New Control controlPath = l UControl = CType(LoadControl(controlPath), UserControl) Dim iUControl As IRefreshUC = UControl AddHandler iUControl.RefreshUC, AddressOf gestoreRefresh PlaceHolder_UC.Controls.Add(UControl) Next

sei stato veramente utilissimo Gluck.

Ma il mio scopo ultimo non l'ho ancora raggiunto, il mio scopo ultimo è chiamare in gestoreRefresh
un metodo di CatTree1 (ascx che in definitiva è un tree, vedi sotto) per fare delle operazioni server-side e ok

ma anche il refresh grafico del controllo CatTree1 e qui sono di nuovo bloccato
non potendo mettere un UpdatePanel per il CatTree non so come forzargli un postback..

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Gluck74 Profilo | Guru

non ho capito bene il discorso del tree.

Magari apri un altro post e spiegami più in dettaglio cosa ti serve.

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.
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