CME ASSEGNARE UN VALORE AD UNA LABEL IN UN DATALIST

giovedì 29 aprile 2004 - 17.26

LorenaPalomba Profilo | Newbie

Ho creato un datalist e nella sezione
SelectItem ho inserito una lebel che
è valorizzata da un metodo nel presente nel codebehind
della pagina.
Per fare riferimento alla label faccio
uso del metodo FindControl del Datalist
che prende come paramatri l'id della label.
Label MyLabel=(Label)dtlElencoServizi.FindControl("lblFunctions");
Ma pare che non trovi la label, anzi sembra che il metodo
trovi solo i controlli presenti nella sezione ItemTemplate.

Qualcono sa darmi una mano?????

Brainkiller Profilo | Guru

Ciao,
allora per poter usare il metodo FindControl devi farlo dentro l'evento OnItemDataBound quando i Dati stanno per essere bindati al controllo. Quindi dovrai usare nel file .aspx questo codice per esempio:

<asp:DataList id="ItemsList" GridLines="Both" CellPadding="3" CellSpacing="0" runat="server">
<SelectedItemTemplate>
<asp:Label id="QtyLabel" Text='<%# DataBinder.Eval(Container.DataItem, "Qty") %>' runat="server"/>
</SelectedItemTemplate>
</asp:DataList>

e poi nel code-behind questo che ti permette di modificare il testo della Label Qty:

private void ItemsList_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{

if (e.Item.ItemType==ListItemType.SelectedItem)
{
Label k=(Label)e.Item.FindControl("QtyLabel");
k.Text="CIAO";
}
}

ciao
david

LorenaPalomba Profilo | Newbie

Grazie per il tuo valido aiuto.
Un collega mi ha però suggerito un'altra
soluzione.
Nell'evento SelectedIndexChanged invocare prima il metodo
Databind del Datalist e poi invocare il metodo
findControl.
In questo modo funziona.
private void dtlServizi_SelectedIndexChanged(object sender, System.EventArgs e)
{
dtlServizi.DataBind();
DataList dtlFunzioni=(DataList)dtlServizi.SelectedItem.FindControl("Label");
}

Tu sai dirmi quale delle due soluzioni è quella più valida?

Ciao
Lorena

Brainkiller Profilo | Guru

Ciao,
nel mondo dell'informatica si può risolvere un problema in vari modi fortunatamente.
Quindi se anche questa soluzione funzion, tanto meglio.
Una volta che riesci a raggiungere il tuo obbiettivo magari scrivendo codice elegante sei a posto.
Valuta le due soluzioni e scegli tu :)

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