Creare controlli dinamicamente

lunedì 09 novembre 2009 - 15.21

liveforever81 Profilo | Junior Member

Salve a tutti.
Avrei bisogno di un vostro aiuto: vi illustro il problema.

Ho una collezione di dati che vorrei venisse visualizzata a video. La collezione è di questo tipo:

Collezione1
NomeDato11
ValoreDato11
NomeDato12
ValoreDato12

Collezione2
NomeDato21
ValoreDato21
Etc…

Ho una web application che chiama un controllo custom chiamato PannelloPadre.cs
PannelloPadre eredita da Panel (voglio che sia, appunto, un pannello).

Ho poi 3 custom controls che ereditano proprio da PannelloPadre (sono 3 perché rispecchiamo 3 diverse rappresentazioni della collection di cui sopra).
Ciascun elemento della collection vorrei renderizzarlo (nel Panel, appunto) con, ad esempio, 2 label: “Nome” e “Valore”.
Nel PannelloPadre definisco un PlaceHolder che poi andrà “riempito” con le coppie “Nome”-“Valore” di ciascun controllo.

Il problema è che ogni volta che do in pasto al PannelloPadre (che, a seconda del “tipo” di collection richiama un metodo di uno dei 3 controlli) la collezione, esso “sovrascrive” di volta in volta la proprietà Text delle mie label, facendomi vedere solo l’ultima scritta.

Questo è un frammento del codice del Controllo1.cs:

public SimpleCollection(SimpleCollection simpleCollection) : base(simpleCollection) { _lblDataName = new Label(); _lblDataName.Text = simpleCollection.DsDato; _lblDataValue = new Label(); _lblDataValue.Text = simpleCollection.Value.ToString(); } Nell’OnInit(): protected override void OnInit(EventArgs e) { base.OnInit(e); //Aggiungo le label al PlaceHolder this.Placeholder.Controls.Add(_lblDataValue); }

Dove il PlaceHolder è definito a livello di classe padre (PannelloPadre).
Il Pannello padre è così definito:

public PannelloPadre(CollectionType collectionType) { this._collectionType = collectionType; if (collectionType is SimpleCollection) { _placeholder = new PlaceHolder(); } }

L’OnInit():

protected override void OnInit(EventArgs e) { base.OnInit(e); // In base al tipo di CollectionType determino quali controlli vanno aggiunti // al panel switch (_tipoCollectionType) { case TipoCollectionType.SimpleCollection: this.Controls.Add(_placeholder); break; […] } }

Mi fate capire il perché sovrascrivo sempre il valore della Label mentre vorrei tante label quante sono le coppie?
Qualcuno mi può indirizzare?

Grazie mille!
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5