asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 3241
ASPCode.it - Store

  > > Articoli

List HTML dinamica con GetString()

Data di pubblicazione: 02/05/2002        Voto della community: 3,75 (Votanti: 8)

Il codice seguente permette di "costruire" una List HTML in maniera dinamica. Solitamente, per ottenere una cosa del genere, si procede così:

<%
'costruiamo una List delle province italiane
strSQL = "SELECT provinciaID, provinciaNOME FROM tblProvince;"
set objRS = objConn.Execute(strSQL)
%>
<SELECT NAME="prov" onchange="javascript:Funzione()">
<OPTION VALUE="0" SELECTED>Seleziona una provincia</OPTION>
<%
Do Until objRS.EOF
%>

<OPTION VALUE="<%=objRS("provinciaID")%>">
<%=objRS("provinciaNOME")%></OPTION>
<%
  objRS.MoveNext
Loop
%>

</SELECT>
<%
'Ripuliamo la memoria
objRS.Close: Set objRS = Nothing    'chiudiamo e distruggiamo l'Oggetto Recordset
objConn.Close: Set objConn = Nothing    'idem, ma per l'Oggetto Connection
%>

Cosa c'è di sbagliato nell'esempio precedente? Niente, a parte il fatto che per mostrare un elenco completo delle province italiane (che sono - spero di non sbagliarmi - 103) bisogna accedere 206 volte (sic) al recordset tramite ADO e fare altrettanti Response.Write!
Insomma, un vero spreco di risorse nonché una gran perdita di tempo...
Inoltre dobbiamo aspettare l'ultimo (il 206esimo) Response.Write prima di poter chiudere il Recordset e la Connessione per far "respirare" il Server :-)

Per ovviare, ci viene incontro il metodo GetString() dell'Oggetto Recorset.
Ecco come:

<%
'costruiamo una List delle province italiane tramite la GetString()
strSQL = "SELECT provinciaID, provinciaNOME FROM tblProvince;"
set objRS = objConn.Execute(strSQL)

Response.Write("<select name=""prov"" onchange=""javascript:Funzione()"">" &_
                        "<option selected value=""0"">Scegli una provincia</option>")
Response.Write("<option value='")
Response.Write objRS.getstring(,,"'>", "</option><option value='", " ")
Response.Write("'></option></select>")

'Puliamo subito
objRS.Close: Set objRS = Nothing
objConn.Close: Set objConn = Nothing
%>

Le differenze balzano subito agli occhi, le riassumo:
  1. Non siamo costretti a "scorrere" tutto il recordset, ma basta una semplice chiamata alla GetString()
  2. Utilizziamo una unica Response.Write (in realtà sono 4, ma solo per migliorare la leggibilità) contro le 206 del primo esempio.
  3. Possiamo chiudere, subito dopo la Execute, il Recordset e la Connessione, a tutto vantaggio delle prestazioni. Il server ringrazia ;-)
Per adattare l'esempio alle vostre esigenze, l'unica riga di codice da modificare è la seguente:

strSQL = "SELECT provinciaID, provinciaNOME FROM tblProvince;"

<provinciaID> è il campo che andrà nel VALUE della LIST. <provinciaNOME> è il valore che verrà effettivamente visualizzato nella LIST.

Naturalmente va anche implementata la Funzione() che verrà eseguita quando selezioneremo un elemento della lista (che, altrimenti, non servirà a un bel niente).
Vi saluto, promettendovi di spiegare più in dettaglio la GetString() e i suoi parametri in un prossimo articolo.
Arrivederci.




Utenti connessi: 3241