ho provato a fare quello che dici tu, cioè che il secondo controllo si aggiunga sempre ci sono riuscito utilizzando un array di usercontrol in una session. Magari non è il massimo a livello di prestazioni ma va'
Prima di tutto inizializzo la session nel global.asax
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
Dim controlli(10) As UserControl
Session("p") = controlli
End Sub
Poi creo la segg. classe:
ed ecco la pagina con i controlli:codice:Public Class prop Inherits System.Web.UI.Page Public Function SetArrCont(ByVal value As UserControl) As UserControl() Dim controlli() As UserControl = Session("p") For i As Integer = 1 To 10 If controlli(i) Is Nothing Then controlli(i) = value Exit For End If Next Session("p") = controlli End Function Public Function GetArrCont() As UserControl() Dim controlli() As UserControl = Session("p") Return controlli End Function End Class
NB cos' com'è la sequenza dei controlli è limitata a 10. A te espanderla.codice:'Istanzio la classe creata Private p As New prop Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not IsPostBack Then Dim ctlrigheord As UserControl = CType(LoadControl("ascx/ctl1.ascx"), UserControl) phUno.Controls.Add(ctlrigheord) lbRighe.Text = "- Righe: <font color=red>" & phUno.Controls.Count & "</font>" p.SetArrCont(ctlrigheord) ctlrigheord = Nothing Else For Each s As UserControl In p.GetArrCont() If Not s Is Nothing Then phUno.Controls.Add(s) Next End If End Sub Private Sub btnUno_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUno.Click 'Dim ctlrigheord As Control = LoadControl("ascx/ctl1.ascx") Dim ctlrigheord As UserControl = CType(LoadControl("ascx/ctl2.ascx"), UserControl) phUno.Controls.Add(ctlrigheord) lbRighe.Text = "- Righe: <font color=red>" & phUno.Controls.Count & "</font>" p.SetArrCont(ctlrigheord) ctlrigheord = Nothing End Sub
Ti allego la solution di VS.
http://www.sndk.org/programma/provaloadcontrol.zip
Sndk


Rispondi quotando