Paginazione con Literal e SqlDataReader

mercoledì 10 dicembre 2008 - 18.10

WilOhmsford Profilo | Newbie

Ciao a tutti! Sono un novellino... vi prego quindi di scusarmi per strafalcioni ed imprecisioni terminologiche varie.
Dunque, avrei un quesito "logico" riguardo a un'applicazione Asp.Net 2.0 (C#) di VS 2005.

Sto realizzando un sito appoggiato a un db SQL Server con funzionalità simili a quelle di un forum, dove utenti "registrati", e dunque presenti nel db possono "postare" messaggi suddivisi in appositi "thread".
In particolare, la pagina dei messaggi è composta dal classico file aspx, ove ho posto un Literal (System.Web.UI.WebControls.Literal) vuoto e dal file separato aspx.cs, in cui effettuo le query sul db ed il popolamento del Literal.
Il riempimento del Literal avviene tramite un SqlDataReader e un ciclo while, all'interno del quale scrivo il codice HTML che mi genera una tabella contenente ogni "post".

Per intenderci, dove il Literal si chiama "litMsg" e il SqlDataReader "leggi" ho scritto:

while (leggi.Read()) { litMsg.Text += "<table><tr><td>" + leggi["nickname"] + "<br/><img src='images/" + leggi["avatar"] + "'/><br/>Messaggi: " + leggi["numMessaggi"] + "<br/></td><td>" + leggi["messaggio"] + "</td></tr></table>"; }


pescando dunque dalla tabella su db i dati relativi ai campi "nickname", "avatar", "numMessaggi" e "messaggio".

Funziona tutto, perché riesco a visualizzare ogni messaggio all'interno della sua tabella. Il mio problema è però questo: la quantità di "post" inseribili (e dunque di tabelle HTML create ciclicamente) è teoricamente infinita, ed ognuno di essi, su browser, compare nella stessa pagina. Come posso dire all'applicazione di riportare su una pagina i "post" da 0 a 5 e di distribuire gli altri (sempre di 5 in 5) suddividendoli su altre pagine? E come creare un "menù" con numeri progressivi contenenti ognuno il link alle pagine successive?

Ad ora mi sono fermato a questa soluzione parziale: ho un double "contaPost" che viene incrementato ad ogni post pubblicato, nel ciclo while (contaPost++); un double "numPagine = contaPost / 5" e un ciclo for che, in base ad esso, mi stampa i numeri progressivi sotto ai quali dovrei mettere i link alle pagine successive.

for (int n = 0; n <= numPagine; n++) { Response.Write(n.toString());}


Poi ho fatto mille altre prove strampalate ma non ho risolto nulla.

So che potrei usare un GridView, che include questa funzionalità già di suo, ma per ciò che volevo realizzare (ossia un vero e proprio insieme di tabelle contenenti "avatar" e "messaggio") questo controllo mi pone di fronte a non pochi limiti.
Mi rivolgo dunque a chi ne sa più di me, e ringrazio in anticipo chi riuscirà a darmi suggerimenti per questo rompicapo!
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