Lettura label da ItemTemplate

sabato 11 settembre 2010 - 11.52

muccio04 Profilo | Newbie

ciao a tutti,
ho una pagina web contenente questo codice:

<asp:TemplateField HeaderText="prezzo">
<ItemTemplate>
<asp:Label ID="prz" runat="server" Text=<%# distrilan.SiteUser.IsLogged() ? calcolaPrezzo(distrilan.SiteUser.getUser().Username, Eval("codart").ToString()) : calcolaPrezzo("null", Eval("codart").ToString())%>></asp:Label>
</ItemTemplate>
</asp:TemplateField>

nella quale se un utente è loggato o meno genero il prezzo di un articolo, il problema mi si pone quando pero a livello di code behind aggiungo l'articolo al carrello: non riesco a leggere il campo di testo all'interno della label, qualcuno sa darmi qualche dritta? .
Grazie a tutti per l'attenzione,
Simone

p.s. il codice funzionante tramite boundfield è il seguente
<asp:BoundField DataField="prezzo" HeaderText="prezzo" SortExpression="prezzo" />
che pero legge staticamente il prezzo senza darmi la possibilita di effettuare dei calcoli (chiamata a funzione) in base all'utente e al codice articolo.

alexmed Profilo | Guru

Ciao
Prova con FindControl
http://msdn.microsoft.com/it-it/library/486wc64h.aspx

Tenendo presente che se sei all'interno di un controllo devi cercarlo lì:

ListView1.FindControl("prz")

Ciao

alexmed

muccio04 Profilo | Newbie

ciao Ho una datagridview e stavo proprio provando il codice seguente

Label lblPrezzo = (Label)GridViewVisualizzaArticoli.SelectedRow.FindControl("prz");

pero mi riporta il seguente errore:

Object reference not set to an instance of an object.

andrestu Profilo | Expert

devi cercarlo all'interno dei relativi eventi, se per esempio hai un pulsante chiamato "aggiungi" all'interno dell'itemTemplate allora puoi valorizzare la proprietà CommanName (CommandName="Add") cosi poi crei un metodo da associare all'evento OnRowCommand del gridview, all'interno del metodo potrai trovare tutti i controlli disponibili nell'itemTemplate. dovrai richiamare l'itemtemplate sull'index selezionato... comunque sull'MSDN trovi tutti gli esempi

alexmed Profilo | Guru

Ciao
Trattandosi di una GridView, hai già provato con questo sistema?

http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview.selectedrow(v=VS.80).aspx

Ciao

alexmed

muccio04 Profilo | Newbie

grazie a tutti, ho risolto: per tirare fuori una label da un itemtemplate si fa cosi:


<asp:TemplateField HeaderText="prezzo">
<ItemTemplate>
<asp:Label ID="prz" runat="server" Text=<%# distrilan.SiteUser.IsLogged() ? calcolaPrezzo(distrilan.SiteUser.getUser().Username, Eval("codart").ToString()) : calcolaPrezzo("null", Eval("codart").ToString())%>></asp:Label>
</ItemTemplate>
</asp:TemplateField>


Label lblPrezzo = (Label)row.FindControl("prz");
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