Ajax mi ha sempre interessato molto, appena ne ho sentito parlare ne sono stato entusiasta perchè quasi non credevo possibile ottenere dati dal server web in modo asincrono ed aggiornare una pagina con questi dati. Quando poi ho visto in funzione Google suggest non mi sembrava vero, ed ho subito provato ad implementarlo ricreando le sue funzionalità in un webcontrol.
Per un pò di tempo ho provato quindi a creare un componente che aggregasse le funzionalità di Google Suggest per riempire dinamicamente una sorta di dropdownlist in base ai caratteri inseriti nella textbox principale.
Esistono diversi framework che consentono di implementare AJAX in applicazioni web, ma quello più conosciuto e che mi piace di più è quello di Michael Schwarz, che ne ha rilasciato ultimamente anche una versione "Professional", ma che pare diventerà presto a pagamento.
Il problema tuttavia era avere uno script javascript che consentisse tutte le funzionalità di Google Suggest, come lo scorrimento dei risultati tramite le frecce della tastiera, il sottolineamento della selezione ecc, il che non era facile, data la difficoltà (almeno per me) nel cercare di comprendere il codice javascript utilizzato da google suggest: http://www.google.com/ac.js.
Tentativi di decriptare quel codice ne sono stati fatti, e sicuramente il primo di questi è stato quello di Chris Justus.
Anche se aver riscritto tutto quel codice offuscato in maniera più comprensibile mi è stato enormemente di aiuto, forse anche per la mia poca esperienza con javascript dopo alcuni tentativi ho smesso di provarci perchè non sono riuscito a capire come evitare che alla selezione di una delle scelte che comparivano nella tendina venisse effettuata una richiesta a una nuova pagina, come accade appunto in google suggest.
Su CodeProject finalmente ho trovato un componente che estende il controllo TextBox e che aggrega queste funzionalità utilizzando codice javascript elaborato da Julian Robichaux, che sulla base di quello utilizzato da google suggest ne ha creato uno ad hoc e ne ha realizzato un esempio online: Zip Code Lookup Test.
Per l'implementazione di Ajax, invece, il controllo utilizza il framework di Michael Schwarz.
L'articolo che descrive questo controllo si intitola Implementing Ajax.NET-based Lookup Server Control. Per me è davvero comodo.