Impaginazione risultati query con script C#

marmar.it

Nuovo Utente
14 Gen 2013
4
0
0
Salve a tutti,

mi sono appena registrato al forum per chiedervi aiuto riguardo uno script che sto costruendo.

Premesso che mi sono affacciato da poco al web dinamico e che ho pochissime conoscenze di ASP.NET, ho trovato uno script in C# in rete che ho riadattato alle mie esigenze.

Cosa fa lo script ?

- si connette a un database Access
- esegue una query in base ai valori inseriti in un form
- fa un ciclo while in cui stampa i risultati

Il tutto viene eseguito dentro il tag <script language="c#" runat="server"> ... </script>

Cosa vorrei io? Che i risultati venissero impaginati per non avere una pagina unica con 1000 record.

Vi ringrazio anticipatamente per il vostro aiuto.

Ecco il codice completo:

Codice:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

        
<script language="C#" runat="server">

    void Page_Load(Object sender, EventArgs e)
    {
 
 
 
        // stringa di connessione
        String ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("marmar.mdb");

        // oggetto cn di tipo OleDbConnection
        OleDbConnection cn = new OleDbConnection(ConnString);

        // apertura della connessione
        cn.Open();



		// creazione della pagina
		
        // Per inserire file esterno:
        // Response.WriteFile ("XXXXX.htm");
        
        // Per scrivere codice:
        // Response.Write("</XXXXX>");
        
        // ATTENZIONE: ALL'INTERNO DI RESPONSE.WRITE TUTTE LE VIRGOLETTE DEVONO ESSERE SINGOLE
        // EXA: Response.Write("<p class='serif'>");


		// ALL'INTERNO DELLA DIV "CONTENT", DOPO GLI H, AGGIUNGIAMO:
			// ! PER IL TAG LABEL VA CREATA UNA CLASSE CSS CHE NE SPECIFICA WIDTH 
		
		
		// form
		Response.Write("<form action='' method='get'>");
		Response.Write("<label for='titolo'>Titolo: </label>");
		Response.Write("<input type='text' name='titolo'>");
		Response.Write("<br/>");
		Response.Write("<label for='autore'>Autore: </label>");
		Response.Write("<input type='text' name='autore'>");
		Response.Write("<input type='submit' name='submit' value='Cerca'>");
		Response.Write("</form>");


        // query
        // la variabile si scrive:
        // '%" + Request.QueryString["NOME DELL'INPUT"] + "%'
		// il simbolo % è obbligatorio con LIKE, vale come un asterisco (exa: %king%)
        // REGOLE:
        // NON INTERPORRE PIU' DI UNO SPAZIO TRA LE PAROLE, ALTRIMENTI LA QUERY NON FUNZIONA
        // NON SPEZZARE MAI LA RIGA
        String sql =
        "SELECT TITOLO, AUTORE FROM titoli WHERE titolo LIKE '%" + Request.QueryString["titolo"] + "%' AND autore LIKE '%" + Request.QueryString["autore"] + "%' ORDER BY titolo";

        // creiamo l'oggetto cmd di tipo OleDbCommand
        // passando la Sql e la connessione al costruttore dell'oggetto
        OleDbCommand cmd = new OleDbCommand(sql, cn);

        // creiamo un oggetto di tipo OleDbDataReader
        // Esso è assimilabile a un RecordSet con cursore di tipo forward-only in ASP tradizionale
        OleDbDataReader rdr = cmd.ExecuteReader();

		
		
		
        // Cosi si farebbe una tabella:
        // Response.Write("<table border=1 cellspacing=1 align=center>");
        // Response.Write("<tr><th>TITOLO</th><th>AUTORE</th></tr>");

        // while (rdr.Read()){
        //    Response.Write("<tr>");
        //    Response.Write("<td>" + rdr["TITOLO"] + "</td>");
        //   Response.Write("<td>" + rdr["AUTORE"] + "</td>");
        //    Response.Write("</tr>");
        //}
		// ...vari response.write con i tag di chiusura
	





// -----------------------------


//--------------







		// COME LO VOGLIO IO:

// se tutti i campi di ricerca sono vuoti...	
if
	(
		(string.IsNullOrEmpty(Request.QueryString["titolo"]))
		&&
		(string.IsNullOrEmpty(Request.QueryString["autore"]))
		// inserire tutti i Request.QueryString del form, preceduti da &&
	)
	// ...impongo all'utente di inserire almeno un parametro	
	{
		Response.Write("Inserire almeno un parametro di ricerca.");
	}

// se invece ha inserito qualcosa ma non viene trovata...
else if
	(rdr.HasRows == false)
	{
		Response.Write("La ricerca non ha prodotto alcun risultato.");
	}		
		
// se invece viene trovata...
else
	// ...procedo normalmente a visualizzare i risultati
	{ 
		Response.Write("<h3>Risultati della ricerca:</h3>");
		Response.Write("<ul class='teche'>");

		while (rdr.Read()){
           	Response.Write("<li>");
           	Response.Write("<strong>" + rdr["TITOLO"] + "</strong><br/>");
           	Response.Write("<strong>Autore:</strong> " + rdr["AUTORE"] + "<br/>");
           	Response.Write("</li>");
           	Response.Write("<hr />");
			}

			Response.Write("</ul>");
	} 




        // Completiamo il codice Html della della pagina.
        
        // Per inserire file esterno:
        // Response.WriteFile ("XXXXX.htm");
        
        // Per scrivere codice:
        // Response.Write("</XXXXX>");

        // ATTENZIONE: ALL'INTERNO DI RESPONSE.WRITE TUTTE LE VIRGOLETTE DEVONO ESSERE SINGOLE
        // EXA: Response.Write("<p class='serif'>");


        // chiusura del DataReader
        rdr.Close();

        // chiusura della connessione
        cn.Close();
    }
</script>
 

Vins

Moderatore
Membro dello Staff
MOD
28 Lug 2009
238
19
0
Ciao e benvenuto, per impaginare i risultati ti consiglio di utilizzare un controllo come la GridView.