- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Raggruppamento in una select
-
Raggruppamento in una select
ciao ragazzi vorrei chiedervi il vostro aiuto per ottenere una select con raggruppamento dei valori.
Mi spiego meglio:
Il codice di cui sotto mi restituisce i valori trovati nel db e mi popola la select. Il problema è che ci sono tantissimi valori, mettiamo da 1 a 100.
Vorrei poter ottenere un raggruppamento tipo da 1 a 10 (gruppo 1) da 11 a 20 (gruppo 2) e così via.
Non credo sia impossibile ma non riesco a farlo.
grazie in anticipo a chi vorrà aiutarmi<select name="Lunghezza">
<option value=""></option>
<%
SQL2 = " SELECT Lunghezza FROM Prodotti WHERE Lunghezza > '0'
Set RS2 = Conn.Execute(SQL2)If RS2.EOF Then RS2.MoveFirst
Do While Not RS2.EoF
%>
<option value="<%=rs2("Lunghezza")%>"
<% if RS2("Lunghezza")=Lunghezza then %>selected="selected"<%end if%><%=rs2("Lunghezza")%> mm.</option>
<%
RS2.MoveNext
Loop
%>
</select>
-
Prova a dare uno sguardo qui:
[aggiungi www].w3schools.com/tags/tag_optgroup.asp
Dovresti poi modificare anche leggermente il codice, magari predisponendo un ciclo "padre" che gestisce i passaggi da un range all'altro (0 - 10, 10 - 20, ...) ... solo a titolo d'esempio:
<select name="Lunghezza">
<%
for (int i = 0; i < max(lunghezza); i += 10)
{
stampa tag optgroupselect * from prodotti where lunghezza >= i && i <= (i + 10)
while
{
per ogni record -> stampa option
}stampa chiusura tag optgroup
%>
</select>Marshall`
-
Ciao Marshall, ti ringrazio innanzitutto per la tua attenzione.
Purtroppo però non sono così bravo da svilupparlo da solo, potresti per favore aiutarmi un po di piu? magari facendomi solo il primo esempio poi continuo io con le altre option...
grazie mille
-
Volentieri, ma il problema è che lavoro in C# e la tua sintassi non mi è molto familiare ... Provo a fare qualche pasticcio qui sotto, sperando che poi tu possa procedere da solo nell' "adattamento" o che ci sia qualcun'altro che possa darti il codice già pronto
<select> <% // Prendi il valore massimo di Lunghezza che hai nel tuo DB SQL2 = " SELECT MAX(Lunghezza) FROM Prodotti Set RS2 = Conn.Execute(SQL2) int maxLunghezza = rs2("Lunghezza"); // Qui entri in un ciclo per gestire i passaggi da un blocco di 10 all'altro (0-10, 10-20) for (int i = 0; i <= maxLunghezza; i += 10) { Response.Write("<optgroup label=\"" + i + " - " + (i + 10) + "\">"); // Qui fai una query per prendere tutti i prodotti con lunghezza compreso nel range che stai esaminando (guarda il ciclo superiore) SQL2 = " SELECT Lunghezza FROM Prodotti WHERE Lunghezza > i AND Lunghezza <= (i + 10) Set RS2 = Conn.Execute(SQL2) If RS2.EOF Then RS2.MoveFirst Do While Not RS2.EoF // Semplice stampa della option per ogni elemento Response.Write("<option value=\"" + i + "\">" + i + "</option>"); RS2.MoveNext Loop // Uscito dal ciclo di lettura dei records dal DB, stampi la chiusura dell'optgroup aperto prima Response.Write("</optgroup>"); } %> </select>
Marshall`
-
Quanta grazia!
non sono abituato a tanta gentilezza
Ti ringrazio ancora, questo finesettimana proverò ad adattarlo e vediamo cosa viene fuori.Buona giornata