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!