Casella di ricerca

martedì 28 aprile 2009 - 17.43

mikkosoft Profilo | Newbie

Buongiorno, vorrei creare una casella di testo che si comporta tipo quella di google, cioè vorrei che mano a mano che inserisco caratteri nella casella di testo, nella parte inferiore compaiano delle possibili scelte salvate in un qualche db.
Qualcuno ha qualche idea?
Grazie

Jeremy Profilo | Guru

Ciao Mirko.
La ComboBox offre anche la funzionalità che chiedi impostando la proprietà AutoCompleteMode = Windows.Forms.AutoCompleteMode.SuggestAppend e, naturalmente, AutoCompleteSource = Windows.Forms.AutoCompleteSource.ListItems.

Facci sapere....
Ciao

alexmed Profilo | Guru

Ciao
Aggiungo solo che se vuoi fa apparire come TextBox imposta anche la proprietà .DropDownStyle = ComboBoxStyle.Simple



Me.ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend Me.ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems Me.ComboBox1.DropDownStyle = ComboBoxStyle.Simple Dim COMUNI() As String = {"Agliè", _ "Airasca", _ "Ala di Stura", _ "Albiano d'Ivrea", _ "Alice Superiore", _ "Almese", _ "Alpette", _ "Alpignano", _ "Brandizzo", _ "Bricherasio", _ "Brosso", _ "Brozolo", _ "Bruino", _ "Brusasco", _ "Bruzolo", _ "Buriasco", _ "Burolo", _ "Busano", _ "Bussoleno", _ "Buttigliera Alta", _ "Cafasse", _ "Caluso", _ "Cambiano", _ "Campiglione-Fenile", _ "Candia Canavese", _ "Candiolo", _ "Ciriè", _ "Claviere", _ "Coassolo Torinese", _ "Coazze", _ "Collegno", _ "Colleretto Castelnuovo", _ "Colleretto Giacosa", _ "Condove", _ "Corio", _ "Frassinetto", _ "Front", _ "None", _ "Novalesa", _ "Oglianico", _ "Orbassano", _ "Orio Canavese", _ "Osasco", _ "Osasio", _ "Oulx", _ "Ozegna", _ "Palazzo Canavese", _ "Pancalieri", _ "Parella", _ "Pavarolo", _ "Pavone Canavese", _ "Pecco", _ "Pecetto Torinese", _ "Perosa Argentina", _ "Perosa Canavese", _ "Rivarolo Canavese", _ "Rivarossa", _ "Rivoli", _ "Robassomero", _ "Rocca Canavese", _ "Roletto", _ "Romano Canavese", _ "Ronco Canavese", _ "Rondissone", _ "Rorà", _ "Rosta", _ "Roure", _ "Rubiana", _ "Rueglio"} Me.ComboBox1.Items.AddRange(COMUNI)

Ciao

alexmed

mikkosoft Profilo | Newbie

Grazie a entrambi!
Volendo invece se imputo "ar", tutti gli item che contengono "ar", invece di quelli che iniziano con "ar"?

Jeremy Profilo | Guru

Ciao Mirko.
>Volendo invece se imputo "ar", tutti gli item che contengono "ar", invece di quelli che iniziano con "ar"?
A questo punto dovresti filtrare l'origine dati con l'operatore LIKE.

Facci sapere...
Ciao

mikkosoft Profilo | Newbie

Cioè dovrei filtrare le stringhe da aggiungere nell'array Comuni e quindi ricaricare la lista in base a quello che inserisco nella casella di testo?
E' possibile aumentare il font della finestra dei suggerimenti e magari cambiare il colore delle singole righe?

Jeremy Profilo | Guru

Ciao Mirko.
Se come origine dati hai un array, puoi usare crearti una funzioncina che, con l'aiuto delle Regular Expression, ti restituisce un array con i valori che corrispondono ai criteri che gli dai come parametro.
La soluzione che ti avevo indicato il post precedente si riferiva all'uso di un Database come origine dati.

Facci sapere...
Ciao

mikkosoft Profilo | Newbie

In effetti come origine dati ho un db. Quindi tu mi consigli di fare un filtro ogni volta che cambia il valore della casella di testo?

Jeremy Profilo | Guru

Non proprio.
intendo dire di modificare il valore del filtro ogni volta che cambi il testo della combobox.
Per far ciò ti serve un bindingsource(associato ad una datatable contenente tutti i record) che espone una proprietà Filter adatta allo scopo.

Facci sapere....
Ciao.

mikkosoft Profilo | Newbie

E' quello che intendevo, avevo capito bene, grazie. Ma non si rallenta molto avendo molti records?
Invece per cambiare i font ed il colore delle righe hai qualche idea?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5