DataBind e passaggio di valori tra pagine

venerdì 09 marzo 2012 - 09.58
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  .NET 3.0  |  .NET 3.5  |  .NET 4.0

mferrara00 Profilo | Newbie

Ciao a tutti,
sto creado un applicazione in asp.net simile a cutenews (scritta in php).
In pratica voglio visualizzare le news e i commenti associati ad ogni news.

Per quanto riguarda caricare le news sulla pagina ho usato la seguente funzione (lato vb.net):
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

mentre per visualizzarlo (lato aspx) utilizzo quanto segue:
<asp:Repeater id="AreaRipetuta" runat="server"> <ItemTemplate > <%# DataBinder.Eval(Container.DataItem, "Testo").ToString()%> <br /> Nome: <%# DataBinder.Eval(Container.DataItem, "Nome").ToString() %> <br /> <%# IDNews = Container.DataItem("ID") %> <div style="float: right;"><!-- no full story--> <a href="leggicommenti.aspx"> <%# DataBinder.Eval(Container.DataItem, "NCommenti").ToString() %> Commenti</a></div> <br /> <hr color="#C41E3A"><br><br><div style="width:100%; margin-bottom:30px;"> </ItemTemplate> </asp:Repeater>

Vorrei settare il valore dell'id della news, e passarlo alla pagina per visualizzare i commenti associati a questa news
ho provato a fare così (io avevo pensato di settarlo a livello si sessione)
ho provato a fare così:
<%# IDNews = Container.DataItem("ID") %>
ma mi ritorna sempre il valore 0 (IDNews è integer)

Sapete dirmi dove sbaglio?
Grazie mille.
Marco

DomA Profilo | Expert

Ciao,
puoi utilizzare 2 Metodi

>>1)° Metodo Classico (deriva da classic asp)
credo potresti passare l'ID della news così:

>>Al posto di <a href="leggicommenti.aspx">

utilizza un HyperLink

facendo una cosa del genere

>> <asp:HyperLink ID="HyperLink" runat="server" NavigateUrl='<%# String.Concat("leggicommenti.aspx?cod=", Eval("ID")) %>' Text="Leggi i Commenti"></asp:HyperLink>

Infine nella pagina leggicommenti.aspx recuperi l'ID tramite il classico Request.querystring("cod")
>> 2°) Utilizzando il Metodo PreviousPage.FindControl

Se l'ID è memorizzato in un controllo (label, textbox etc.) puoi recuperarlo nella pagina di destinazione tramite PreviousPage.FindControl

ecco un esempio:

Dim Nome as string Nome = CType((PreviousPage.FindControl("TxtUtente")), TextBox).Text

Spero di esser stato chiaro.
A presto,






http://www.infomidia.it

Domenico

mferrara00 Profilo | Newbie

Grazie mille!!!!

funziona!!!

hai una birra pagata!!!

DomA Profilo | Expert


Mi va bene anche la risposta accettata.
http://www.infomidia.it

Domenico

totti240282 Profilo | Guru

Scusate ma il Previouspage funziona anche con un HyperLink ?

Io sapevo di no o col server.transer o al postbackurl.
C'è solo un capitano !!!!!!

DomA Profilo | Expert

Ciao Totti ,
non credo che il PreviousPage.FindControl funzioni anche con HyperLink [non ho mai provato anche perché, a mio avviso, è privo di senso.]

Comunque se guardi bene il post ho suggerito 2 metodi distinti per il passaggio di valori tra le pagine:
>>1° attraverso un HyperLink;

>>2° recupero del valore attraverso il metodo PreviousPage.FindControl (che onestamente preferisco);

Non so quale dei due mferrara abbia utilizzato, ma so che ha risolto il suo problema ed è per questo che ho chiesto di accettare la risposta (ed anche per soddisfazione personale).

A presto,

http://www.infomidia.it

Domenico

totti240282 Profilo | Guru

Infatti ricordavo bene...

http://msdn.microsoft.com/it-it/library/system.web.ui.page.previouspage.aspx

http://msdn.microsoft.com/it-it/library/ms178141%28v=vs.80%29.aspx

C'è solo un capitano !!!!!!
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5