Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Listbox filtrate con lookup field....si può ?

    Salve a tutti,
    ho una paginetta in asp con una list box con 500 voci che selezionate fanno delle select specifiche su di un DB in access.
    Benchè le 500 voci siano in ordine alfabetico, trovare la voce desiderata molte volte è tedioso ed allora ho inserito un piccolo script in Javascript che non fa altro che fornirmi un campo di lookup ! In pratica sul listbox c'è un textbox in cui scrivo la parola che mi interessa ed in automatico mi viene evidenziata la prima riga del mio listbox che contiene la parola che ho scritto.
    Il problema è che trova soltanto la PRIMA di parola e si ferma li...Magari pero' ho altre 5 o 6 voci che contengono la parola scritta....
    A questo punto mi domando: è possibile fare in modo che il testo che scrivo nel lookup field mi faccia da filtro di modo da farmi vedere nella listbox SOLO le voci che contengono quella parola ?
    Mi spiego: ho 500 voci selezionabili nella listbox, scrivo nel campo di teso la parola cane ed in automatico nella listbox non vedo piu0 le 500 voci ma soltanto quelle contenenti la parola "cane".
    E' fattibile ?

    Grazie

    Tulipanonero

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Ti posto solo la struttura di come potresti fare...
    Ho scritto un ibrido tra testo e js, adattalo tu
    <script>
    regexp=/nome_lockfield/;
    for (i=0; i<=elementi_select; i++){
    if (regexp.test(nome_select.options[i])){
    lascia l'elemento nella select
    }
    else {elimina elemento}
    }
    </script>

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao a tutti

    Tulipan0nero per fare quello che dici tu devi avere i dati della listbox in una struttura dati lato client... e poi ogni volta che scrivi qualcosa nella text devi svuotare la listbox e ripopolarla con le option opportune...
    in questo caso io non userei le RegularExpression... basta un indexOf
    te faccio un esempio
    codice:
    <HTML>
    <HEAD>
    <script language="javascript">
    var arr = new Array()
    //questa parte la crei in asp
    arr[arr.length]=new Array('cane',1)
    arr[arr.length]=new Array('cane da caccia',2)
    arr[arr.length]=new Array('figliol prodigo',3)
    arr[arr.length]=new Array('figlio di un cane',4)
    arr[arr.length]=new Array('porcocane',5)
    function filtra(lb,tt){
    	for(i=lb.options.length-1;i>=0;i--)
    		lb.options[i]=null
    	for(i=0;i<arr.length;i++)
    		if(tt=='' || (tt!='' && arr[i][0].indexOf(tt))>=0){
    			lb.options[lb.options.length] = new Option(arr[i][0],arr[i][1])
    		}
    }
    </script>
    </HEAD>
    <BODY onload="filtra(document.forms[0].ListBox,'')">
    <form>
    <input type="text" name="NomeText" onkeyup="filtra(this.form.ListBox,this.value)">
    
    <select name="ListBox" size="10">
    </select>
    </form>
    </BODY>
    </HTML>
    facce sape'
    Aloha

  4. #4
    Considerato che con ASP sono alle prime armi...ti sarebbe troppo disturbo scrivermi tu la parte in ASP che mi serve ?

    Grazie mille e scusa il disturbo.
    Il niubbo Tulipanonero

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    come sono i campi del db da usare?
    Comunque sarà una roba del tipo
    codice:
    <HTML>
    <HEAD>
    <script language="javascript">
    var arr = new Array()
    //questa parte la crei in asp
    <%
    Do while not RS.EOF%>
    arr[arr.length]=new Array('<%=Replace(RS("nomeCampo"),"'","\'")%>','<%=Replace(RS("nomeCampo"),"'","\'")%>');<%
      RS.MoveNext
    Loop%>
    
    function filtra(lb,tt){
    	for(i=lb.options.length-1;i>=0;i--)
    		lb.options[i]=null
    	for(i=0;i<arr.length;i++)
    		if(tt=='' || (tt!='' && arr[i][0].indexOf(tt))>=0){
    			lb.options[lb.options.length] = new Option(arr[i][0],arr[i][1])
    		}
    }
    </script>
    </HEAD>
    <BODY onload="filtra(document.forms[0].ListBox,'')">
    <form>
    <input type="text" name="NomeText" onkeyup="filtra(this.form.ListBox,this.value)">
    
    <select name="ListBox" size="10">
    </select>
    </form>
    </BODY>
    </HTML>

  6. #6
    Ciao,
    siccome sono proprio impedito, ti allego il codice della pagina che si kiama polisearch.asp e che andrebbe modificata ! Puoi farmi la GRANDISSIMA cortesia di farlo tu per me ? Io sono un principiante alle primissime armi...sigh


    <html>
    <title>Script di selezione multipla record Policlinico</title>
    <body bgcolor="#C0C0C0">
    <%' Check to see if there is any input
    ' if not display the form for input
    u_input=request.form("u_input")
    if u_input = "" then %>


    <form action="<%= request.servervariables("script_name")%>" method="post" target="_blank">
    [img]Denominazione_Ambulatorio.jpg[/img]
    <FORM>

    <script language="Javascript">
    <!--
    function doSelectChange(el,dest) {
    dest.value = el.options[el.selectedIndex].text
    }
    function LookupItem(el,dest) {
    var curValue = el.value.toLowerCase()
    var found = false
    var index = dest.selectedIndex
    var numOptions = dest.options.length
    var pos = 0
    // Repeat until found or end of list is reached
    while ((!found) && (pos < numOptions)) {
    // Do comparisons in lowercase
    found = (dest.options[pos].text.toLowerCase().indexOf(curValue)==0)
    // found = (dest.options[pos].text.toLowerCase().search(curValue)!=-1)
    if (found)
    index = pos
    pos++
    }
    if (found) //Updated listbox
    dest.selectedIndex = index
    }
    // -->
    </script>

    <TABLE height="155"><TR><TD height="25">
    <input type="text" name="LOOKUP" size="20" ONKEYUP="LookupItem(this,this.form.u_input)">
    </TD><TD height="25"></TR><TR><TD height="122">
    <select size="6" name="u_input" multiple ONCHANGE="doSelectChange(this,this.form.LOOKUP)">

    <option value="Chirurgia accesso vascolare in dialisi">Accesso vascolare in
    dialisi - Chirurgia</option>
    <option value="Studio della adattabilità al buio">Adattabilità al buio -
    Studio della</option>
    <option value="Aggregabilità piastrinica">Aggregabilità piastrinica</option>
    <option value="Agiografia con fluorescina o agioscopia oculare">Agiografia con
    fluorescina o agioscopia oculare</option>
    <option value="Agiografia digitale al verde di indocianina">Agiografia digitale
    al verde di indocianina</option>
    <option value="Agoaspirato 1">Agoaspirato 1</option>
    <option value="Agoaspirato 2">Agoaspirato 2</option>
    <option value="Centro AISTOM">AISTOM (Centro)</option>
    <option value="Centro valutazione Alzheimer">Alzheimer - Centro valutazione </option>
    <option value="Centro Alzheimer e Parkinson">Alzheimer e Parkinson (centro)</option>
    <option value="Demenza e Alzheimer">Alzheimer e Demenza</option>
    <option value="Allergologia professionale">Allergologia professionale</option>
    <option value="Allergologia clinica con diagnosi di laboratorio">Allergologia
    clinica con diagnosi di laboratorio</option>
    <option value="Visita di Allergologia">Allergologia - Visita di</option>
    <option value="Analisi di laboratorio specialistici">Analisi di laboratorio
    specialistici</option>
    <option value="Analisi (solo per ricoverati 24H su 24)">Analisi (solo per
    ricoverati 24H su 24)</option>
    <option value="Analisi (l 80% riservato ai pazienti interni, il 20% agli interni)">Analisi
    (l 80% riservato ai pazienti interni, il 20% agli interni)</option>
    <option value="Ambulatorio andrologia">Andrologia - Ambulatorio</option>
    <option value="Andrologia">Andrologia</option>
    <option value="Visita Anestesiologica">Anestesiologica - Visite per</option>
    <option value="Valutazione anestesiologica pre-operativa">Anestesiologica
    pre-operativa - Valutazione</option>
    <option value="Visita di angiologia">Angiologia - Visita di</option>
    <option value="Endoscopia - Chirurgia gen. ind. toracico">Endoscopia - Chirurgia
    gen. ind. toracico</option>
    <option value="Endoscopia - Chirurgia gen. dei trapianti e dell'uremico">Endoscopia
    - Chirurgia gen. dei trapianti e dell'uremico</option>
    <option value="Endoscopia - Chirurgia gen. ind. oncologico">Endoscopia -
    Chirurgia gen. ind. oncologico</option>
    <option value="Ecografia - Medicina interna e geriatria">Ecografia - Medicina
    interna e geriatria</option>
    <option value="Ecografia - Ostetricia e ginecologia">Ecografia - Ostetricia e
    ginecologia</option>





    </select><input type="submit" value="OK">

    </TABLE>

    </form>

    <%' When there is input display the data
    else
    ' Name of the Access db
    accessdb="the_knowledge"

    ' Connection to the db
    cn="DRIVER={Microsoft Access Driver (*.mdb)};"
    cn=cn & "DBQ=" & server.mappath(accessdb)

    ' Create a server record set object
    set rs = server.createobject("ADODB.Recordset")

    ' Create an sql statement that will select all the table elements
    ' A single selection will simply query for that year
    ' Multiple selections will be passed
    ' already comma delimited. Which is fine for numerics
    ' However for text queries uncomment the two lines below
    ' beginging with u_input and uncomment the sql query for alpha

    ' For text queries u_input will need to be comma delimited and in single quotes
    ' We replace the commas with ',' and change the sql to include single quotes around u_input
    ' u_input="Detroit,Pittsburgh"
    ' u_input=replace(u_input,",","','")

    ' The sql statement is written to the browser
    ' to demonstrate this.
    'sql = "select * from t_knowledge where Applies_to in("& u_input &")" 'sql for numerics

    ' sql = "select * from Policlinico where Descrizione in('"& u_input &"')" 'sql for alpha
    sql = "SELECT Policlinico.Descrizione, Policlinico.UO, Policlinico.Dipartimento, Policlinico.Medico_Responsabile, Ambulatorio.Ubicazione, Ambulatorio.Telefono, Ambulatorio.Giorno, Ambulatorio.Orario, Ambulatorio.Mod_Prenotazione FROM Policlinico INNER JOIN Ambulatorio ON Ambulatorio.Descrizione = Policlinico.Descrizione where Policlinico.Descrizione in('"& u_input &"')"
    ' Execute the sql
    rs.Open sql, cn
    %>

    <table border=3 align=center>
    <% ' Write out all the elements requested in the
    ' sql statement as table headers
    for each element in rs.fields%>
    <th><%= element.name %></th>
    <% next
    ' End table headers %>
    </tr>
    <tr>
    <% ' Write out all the values in the record
    do while not rs.eof
    for each element in rs.fields %>
    <td align=right><%= rs(element.name) %></td>
    <%
    next
    ' end of record %>
    </tr>
    <% ' Move to the next record
    rs.movenext
    ' Loop to the beginning
    loop%>
    </table>




    <% end if 'End check for user input %>
    </body>

  7. #7
    Riuscite a darmi una mano ?
    Ve ne sarei infinitamente grato !

    Tulipanonero

  8. #8
    UP

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ekkime qua Tulipan0nero,

    ma la listbox non devi crearala da codice asp??? Mah!...

    ti metto il mio codice nel tuo... se poi hai problemi chiedimi
    codice:
    <%@ Language=VBScript %>
    <%' Check to see if there is any input
    ' if not display the form for input
    u_input=request.form("u_input")
    %>
    <html>
    <title>Script di selezione multipla record Policlinico</title>
    <body bgcolor="#C0C0C0"<%if u_input = "" then%> onload="filtra(document.forms[0].u_input,'');"<%end if%>>
    <%' Check to see if there is any input
    ' if not display the form for input
    u_input=request.form("u_input")
    if u_input = "" then %>
    
    
    <form action="<%= request.servervariables("script_name")%>" method="post" target="_blank">
    [img]Denominazione_Ambulatorio.jpg[/img]
    <FORM>
    
    <script language="Javascript">
    <!--
    function doSelectChange(el,dest) {
    	dest.value = el.options[el.selectedIndex].text
    	}
    function LookupItem(el,dest) {
    	var curValue = el.value.toLowerCase()
    	var found = false
    	var index = dest.selectedIndex
    	var numOptions = dest.options.length
    	var pos = 0 
    	// Repeat until found or end of list is reached
    	while ((!found) && (pos < numOptions)) {
    		// Do comparisons in lowercase
    		 found = (dest.options[pos].text.toLowerCase().indexOf(curValue)==0)
    		//	found = (dest.options[pos].text.toLowerCase().search(curValue)!=-1)
    		if (found)
    			index = pos
    		pos++
    	}
    	if (found) //Updated listbox
    		dest.selectedIndex = index
    }
    
    var arr = new Array()
    arr[arr.length]=new Array('Accesso vascolare in dialisi - Chirurgia','Chirurgia accesso vascolare in dialisi');
    arr[arr.length]=new Array('Adattabilità al buio - Studio della','Studio della adattabilità al buio');
    arr[arr.length]=new Array('Aggregabilità piastrinica','Aggregabilità piastrinica');
    arr[arr.length]=new Array('Agiografia con fluorescina o agioscopia oculare','Agiografia con fluorescina o agioscopia oculare');
    arr[arr.length]=new Array('Agiografia digitale al verde di indocianina','Agiografia digitale al verde di indocianina');
    arr[arr.length]=new Array('Agoaspirato 1','Agoaspirato 1');
    arr[arr.length]=new Array('Agoaspirato 2','Agoaspirato 2');
    arr[arr.length]=new Array('AISTOM (Centro)','Centro AISTOM');
    arr[arr.length]=new Array('Alzheimer - Centro valutazione','Centro valutazione Alzheimer');
    arr[arr.length]=new Array('Alzheimer e Parkinson (centro)','Centro Alzheimer e Parkinson');
    arr[arr.length]=new Array('Alzheimer e Demenza','Demenza e Alzheimer');
    arr[arr.length]=new Array('Allergologia professionale','Allergologia professionale');
    arr[arr.length]=new Array('Allergologia clinica con diagnosi di laboratorio','Allergologia clinica con diagnosi di laboratorio');
    arr[arr.length]=new Array('Allergologia - Visita di','Visita di Allergologia');
    arr[arr.length]=new Array('Analisi di laboratorio specialistici','Analisi di laboratorio specialistici');
    arr[arr.length]=new Array('Analisi (solo per ricoverati 24H su 24)','Analisi (solo per ricoverati 24H su 24)');
    arr[arr.length]=new Array('Analisi (l 80% riservato ai pazienti interni, il 20% agli interni)','Analisi (l 80% riservato ai pazienti interni, il 20% agli interni)');
    arr[arr.length]=new Array('Andrologia - Ambulatorio','Ambulatorio andrologia');
    arr[arr.length]=new Array('Andrologia','Andrologia');
    arr[arr.length]=new Array('Anestesiologica - Visite per','Visita Anestesiologica');
    arr[arr.length]=new Array('Anestesiologica pre-operativa - Valutazione','Valutazione anestesiologica pre-operativa');
    arr[arr.length]=new Array('Angiologia - Visita di','Visita di angiologia');
    arr[arr.length]=new Array('Endoscopia - Chirurgia gen. ind. toracico','Endoscopia - Chirurgia gen. ind. toracico');
    arr[arr.length]=new Array('Endoscopia - Chirurgia gen. dei trapianti e dell\'uremico','Endoscopia - Chirurgia gen. dei trapianti e dell\'uremico');
    arr[arr.length]=new Array('Endoscopia - Chirurgia gen. ind. oncologico','Endoscopia - Chirurgia gen. ind. oncologico');
    arr[arr.length]=new Array('Ecografia - Medicina interna e geriatria','Ecografia - Medicina interna e geriatria');
    arr[arr.length]=new Array('Ecografia - Ostetricia e ginecologia','Ecografia - Ostetricia e ginecologia');
    
    
    
    function filtra(lb,tt){
    	tt=tt.toLowerCase()
    	for(i=lb.options.length-1;i>=0;i--)
    		lb.options[i]=null
    	for(i=0;i<arr.length;i++)
    		if(tt=='' || (tt!='' && arr[i][0].toLowerCase().indexOf(tt))>=0){
    			lb.options[lb.options.length] = new Option(arr[i][0],arr[i][1])
    		}
    }
    
    	// -->
    </script>
    <TABLE height="155"><TR><TD height="25">
    <input type="text" name="LOOKUP" size="20" ONKEYUP="filtra(this.form.u_input,this.value)">
    </TD><TD height="25"></TR><TR><TD height="122">
    <select size="6" name="u_input" multiple ONCHANGE="doSelectChange(this,this.form.LOOKUP)">
    
    </select><input type="submit" value="OK">
    
    </TABLE>
    
    </form>
    
    <%' When there is input display the data
    else
    ' Name of the Access db
    accessdb="the_knowledge" 
    
    ' Connection to the db
    cn="DRIVER={Microsoft Access Driver (*.mdb)};"
    cn=cn & "DBQ=" & server.mappath(accessdb)
    
    ' Create a server record set object
    set rs = server.createobject("ADODB.Recordset")
    
    ' Create an sql statement that will select all the table elements
    ' A single selection will simply query for that year
    ' Multiple selections will be passed
    ' already comma delimited. Which is fine for numerics
    ' However for text queries uncomment the two lines below
    ' beginging with u_input and uncomment the sql query for alpha
    
    ' For text queries u_input will need to be comma delimited and in single quotes
    ' We replace the commas with ',' and change the sql to include single quotes around u_input 
    ' u_input="Detroit,Pittsburgh"
    ' u_input=replace(u_input,",","','") 
    
    '  The sql statement is written to the browser
    ' to demonstrate this. 
    'sql = "select * from t_knowledge where Applies_to in("& u_input &")"  'sql for numerics
    
    ' sql = "select * from Policlinico where Descrizione in('"& u_input &"')"  'sql for alpha
    sql = "SELECT Policlinico.Descrizione, Policlinico.UO, Policlinico.Dipartimento, Policlinico.Medico_Responsabile, Ambulatorio.Ubicazione, Ambulatorio.Telefono, Ambulatorio.Giorno, Ambulatorio.Orario, Ambulatorio.Mod_Prenotazione FROM Policlinico INNER JOIN Ambulatorio ON Ambulatorio.Descrizione = Policlinico.Descrizione where Policlinico.Descrizione in('"& u_input &"')"
    ' Execute the sql 
    rs.Open sql, cn
    %>
    
    <table border=3 align=center>
    <% ' Write out all the elements requested in the 
    ' sql statement as table headers
    for each element in rs.fields%>
    <th><%= element.name %></th>
    <% next
    ' End table headers  %>
    </tr>
    <tr>
    <% ' Write out all the values in the record  
    do while not rs.eof 
    for each element in rs.fields %>
    <td align=right><%= rs(element.name) %></td>
    <% 
    next
    ' end of record %>
    </tr>
    <% ' Move to the next record
    rs.movenext
    ' Loop to the beginning
    loop%>
    </table>
    
    
    
    
    <% end if 'End check for user input %>
    </body>
    Sciao

  10. #10
    Ciao Willy,
    ti ringrazio innanzitutto per la tua cortese attenzione !
    E' raro trovare persone così gentili ! GRAZIE MILLE !
    Andiamo al nostro script...mi continua a dare problemi alla riga 43 dicendomi che è previsto un ';' ma anche se questo punto e virgola io ce lo metto mi continua a dare questo errore....sigh..

    Tulipanonero

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.