65 messaggi dal 01 agosto 2003
Ciao a tutti,
ho il seguente problema ho una listbox con un elenco di vie e una textbox.
Il comportamento che vorrei ottenere è filtrare il contenuto della listbox sulla base di quanto scritto nella textbox... attualmente sono riuscito a farlo mediante l'evento TextChanged della TextBox che lancia una query con l'operatore LIKE passando come parametro il textbox.text.
Funziona correttamente l'unico problema è che per far scattare l'evento TextChanged devo spostare il focus dalla textbox altrimenti non succede nulla... io vorrei ottenere qualcosa di più fluido... cioè mentre scrivo i risultati nella listbox vengono filtrati...

Qualcuno ha qualche suggerimento? Sono disposto anche a cambiare logica se qualcuno ha qualche idea più brillante...

Ciao e grazie.
k-pax ha scritto:
io vorrei ottenere qualcosa di più fluido... cioè mentre scrivo i risultati nella listbox vengono filtrati...

Qualcuno ha qualche suggerimento? Sono disposto anche a cambiare logica se qualcuno ha qualche idea più brillante...


Utilizza AJAX.
Se effettui una ricerca su internet, trovi svariati articoli ed esempi.

Un buon articolo è il seguente:
Ajax vs. ASP .NET: una introduzione

Devi essere registrato al sito per consultare il contenuto del link che ti ho dato. (l'iscrizione è comunque assolutamente gratuita)

E poi l'articolo di Matteo Casati:

JavaScript SOAP Client

Spero di esserti stato di aiuto.
Modificato da naighes il 02 novembre 2005 21.38 -

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
65 messaggi dal 01 agosto 2003
Grazie per l'aiuto... in effetti questa è una soluzione...
Speravo di trovare qualcosa che mi evitasse di scrivere valanghe di Javascript... Uff!!

Grazie mille...
32 messaggi dal 26 ottobre 2005
Per generare l'evento senza dover spostare il focus basta che imposti la proprietà AutoPostBack della TextBox a True.

Il fatto è che tutte le volte che digiti un carattere hai un postback, il che non è bello perché l'utente deve attendere il refresh della pagina.

Una soluzione è appunto AJAX come ti ha detto naighes, però potresti anche utilizzare un metodo leggermente più antiquato ma non per questo meno efficiente che ti permette di inserire nell'applicazione un bel po' di codice in meno.

Si tratta del meccanismo di CallBack. Ovvero lato client puoi effettuare una chiamata sincrona o asincrona al server e recuprare la risposta. Per farlo devi stanziare un oggetto ActiveX lato client nel seguente modo:

var rich = new ActiveXObject("MSXML2.XMLHTTP.4.0");
rich.open("GET", "pagina.aspx", true);
rich.send();

quindi l'oggetto eseguirà la pagina lato client (in questo caso in modo sincrono).

Se cerchi su internet trovi un mucchio di documentazione su questa tecnica.

Ciao...

Denton

Se vuoi il massimo... devi essere pronto a pagare il massimo!
65 messaggi dal 01 agosto 2003
Grazie mille per il consiglio... mi documento!

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.