Creare pagine .aspx dinamicamente

lunedì 15 novembre 2010 - 12.00
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server 2008 R2

evjen84 Profilo | Newbie

Buongiorno a tutti,
nella realizzazione di una web application per la gestione di una libreria on-line sto cercando di implementare una soluzione che segue le seguenti direttive:
- ho una pagina Catalogo.aspx in cui attraverso una listView visualizzo tutti i libri che ho memorizzato in DB (nel DB salvo anche il collegamento alla pagina che mostrerà i dettagli del libro che l'utente deciderà di visualizzare);
- ho una pagina dettaglioLibro.aspx che deve visualizzare i "dettagli" del libro (autore, editore, prezzo, quantità...) su cui l'utente decide di cliccare e che deve popolarsi ogni volta a seconda della scelta effettuata dall'utente sul catalogo(la pagina dettaglioLibri.aspx è una sola);

Facendo opportune ricerche in rete ho appreso che attraverso il metodo: request.querystring("nomeCampo")
riesco a recuperare il valore, in questo caso una stringa, del codiceLibro(ISBN) su cui l'utente clicca dalla pagina Catalogo.aspx.
La pagina dettaglioLibro, quindi, ogni volta che sarà caricata andrà a cercare in DB l'isbn del libro richiesto per recuperare i dettagli del libro affinchè venga riempita di contenuti.
Fin qui tutto chiaro.
Il problema è sorto quando mi son reso conto che il metodo request.querystring("nomeCampo") prende uno e un solo isbn alla volta, poichè nel catalogo libri ho ovviamente più di un libro.
Cmq tale metodo non sono riucito ad implementarlo, perchè nella pagina dettaglioLibro nel punto in cui effettuo la SELECT su DB:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
SelectCommand="SELECT * FROM [libri] WHERE isbn='' " DataSourceMode="Dataset" CacheDuration="Infinite"
ConnectionString="data source=.\SqlExpress; initial catalog=bookstore; user id=sa; password=peppino">
</asp:SqlDataSource>

non sono riuscito a passargli il valore recuperato con queryString...

C'è qualcuno che sa chiarirmi cosa è necessario fare e come quindi procedere?

alx_81 Profilo | Guru

>Buongiorno a tutti,
ciao e benvenuto su dotnethell.it!
mi ero perso questo post senza risposta

>Il problema è sorto quando mi son reso conto che il metodo request.querystring("nomeCampo")
>prende uno e un solo isbn alla volta, poichè nel catalogo libri
>ho ovviamente più di un libro.
a dire il vero, se tu passi al querystring valori separati da virgola (n tuoi isbn separati dal carattere ",") la request ti torna un array.
Quindi diciamo che puoi tranquillamente passare più di un valore, visto che il tipo di ritorno è NameValueCollection (simile al dictionary asp).

>non sono riuscito a passargli il valore recuperato con queryString...
manca il segnaposto del parametro:
SelectCommand="SELECT * FROM [libri] WHERE isbn=@isbn"

e poi la definizione del parametro stesso dentro al sql data source:
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.querystringparameter(VS.80).aspx

devi aggiungere tra i select command parameters il tuo parametro @isbn di tipo "querystringparameter".
A quel punto dovresti essere a posto.

Se però devi far vedere più di un libro alla volta, devi intercettare il request e usare la namevaluecollection per passare ad una stored procedure ad esempio, la tabellina o l'elenco dei valori che ti servono.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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