spiderman (Normal User)
Newbie
Messaggi: 20
Iscritto: 18/06/2008
|
salve a tutti,
sapete come fare aprire una combobox in automatico quando si ci scrive sopra,facendo vedere i risultati della parola cercata?
grazie a tutti della collaborazione!
|
|
walker93 (Member)
Expert
Messaggi: 460
Iscritto: 31/01/2010
|
Modificare a dovere le tre proprietà della combobox:
-AutoCompleteCustomSource
-AutoCompleteMode
-AutoCompleteSource
la prima è l'insieme dei risultati che vorresti mettere
la seconda è il modo con cui vegono mostrati
la terza è la sorgente del suggerimento (usa CustomSurce se riempi la 1° proprietà con i tuoi risultati)
|
|
spiderman (Normal User)
Newbie
Messaggi: 20
Iscritto: 18/06/2008
|
Grazieeeeeee walker93 ma tu sei un amico!
non lo sapevo questa cosa!
ma dimmi ma se io lo voglio collegare la combobox a una tabella tramite:
DataSource --->tabella cliente
displaymember---> cognome
è setto le proprietà
AutoCompleteMode
AutoCompleteSource
è l' AutoCompleteCustomSource lo annullo
l'oggetto combobox non funziona tu sai il perchè, cioè come posso ottenere lo stesso risultato che mi hai indicato tu con i dati all'interno di una tabella?
grazie ancora
|
|
walker93 (Member)
Expert
Messaggi: 460
Iscritto: 31/01/2010
|
Se per tabella intendi un DataGridView allora procedi come segue:
setta le proprietà della combobox
-AutoCompleteMode = (come preferisci, lo stile classico è suggest)
-AutoCompleteSource = "CustomSource"
AutoCompleteCustomSource è una collezione, pertanto possiamo aggiungergli tranquillamente i valori durante l'esecuzione del programma...
Possiamo ottenere i valori che ci interessano in questo modo:
Codice sorgente - presumibilmente C# / VB.NET |
Dim val As String
val = DataGridView.Rows(0).Cells(0).Value
|
i due zeri solo gli indici rispettivamente della riga e della colonna di conseguenza se ti interessano i valori della 3° colonna userai indice 2 (ricordati che l'indice parte da 0 e non da 1) nella parentesi Cells.
in questo modo otteniamo il valore che vogliamo all'interno della tabella.
A te interessa tutta una colonna intera, di conseguenza usiamo un ciclo opportunamente posizionato per ottenere tutti i valori che ci interessano.
e li aggiungiamo alla combobox in questo modo:
Codice sorgente - presumibilmente Plain Text |
ComboBox1.AutoCompleteCustomSource.Add(val)
|
spero di essere stato chiaro
|
|
spiderman (Normal User)
Newbie
Messaggi: 20
Iscritto: 18/06/2008
|
la "DataGridView" è una ottima idea per popolare il "AutoCompleteCustomSource"
se la datagridview si trova nella stessa form.
Ma lo scopo è prendere i dati da una colonna della tabella di un db in sql server, quindi dovvrei fare un ciclo for o while per scansionare una intera colonna?
|
|
walker93 (Member)
Expert
Messaggi: 460
Iscritto: 31/01/2010
|
il problema è che il controllo DataGridView ha la collezione "Cells" all'interno della collezione "Rows" ma non l'ha dentro la collezione "Columns" quindi sei costretto a usare un ciclo...
se la tabella di SQL ti permette di prendere tutta la collezione "Cells" da quella delle colonne non ci sono grossi problemi.
in ogni caso una volta capito come aggiungerle hai suggerimenti della Combobox resta solo da capire come si devono prelevare i valori dalla tabella SQL.
io non ho mai lavorato con SQL SERVER, ma credo che le informazioni per prelevare i valori dalla tabella tu le possa tranquillamente trovare on-line.
|
|
spiderman (Normal User)
Newbie
Messaggi: 20
Iscritto: 18/06/2008
|
salve,
rispondo a walker93 è agli amici di questo forum con la soluzione che ho trovato grazie anche a walker93,
per trovare la colonna del database è popolare "AutoCompleteCustomSource" faccio cosi:
Codice sorgente - presumibilmente VB.NET |
Dim Conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("mioDataSet").ConnectionString) Dim Command1 As SqlCommand = New SqlCommand("select DESCRIZIONE from mia_tabella", Conn) Conn.Open() Dim reader1 As SqlDataReader = Command1.ExecuteReader Do While reader1.Read() DESCRIZIONETextBox.AutoCompleteCustomSource.Add(reader1.GetString(0)) Loop reader1.Close()
|
praticamente nel form_load scrivo il sequente codice, che apro una conessione al db faccio una querry è con un ciclo while popolo AutoCompleteCustomSource,
alla fine mi cerca tutte le stringhe della colonna.
c'è qualcosina di diverso!, in senso che il menu a tentina non si apre è ovvio, quindi la parola cercata non si evidenzia di blu come avviene nel menu a tentina.
Cmq in linea di massima può andare se risolvo questo piccola cosa la posto.
Ultima modifica effettuata da spiderman il 17/02/2011 alle 17:38 |
|
walker93 (Member)
Expert
Messaggi: 460
Iscritto: 31/01/2010
|
Postato originariamente da spiderman:
c'è qualcosina di diverso!, in senso che il menu a tentina non si apre è ovvio, quindi la parola cercata non si evidenzia di blu come avviene nel menu a tentina.
Cmq in linea di massima può andare se risolvo questo piccola cosa la posto. |
Non ho capito cosa intendi dire ma credo che si possa risolvere con la proprietà
"AutoCompleteMode", o mi sbaglio? |
|
spiderman (Normal User)
Newbie
Messaggi: 20
Iscritto: 18/06/2008
|
non si risolve.
quello che voglio dire è se tu lasci stare i settaggio delle proprietà
AutoCompleteCustomSource
AutoCompleteMode
AutoCompleteSource
è colleghi la combobox alla tabella tramite le proprietà
datasource --->miatabella_bindingsource
display member----> miacolonna
in automatica si prende i valori della colonna, se tu fai la prova a scrivere nella combobox è clicchi la freccia del menu a tendina per farla aprire noterai che la parola cercata è evidenziata di blu, quello che non avviene con "autocompletecustomsource", attenzione però sono piccolezze,
ma non tanto perchè se un cliente vuole che la parola cercata la vuole evidenziata è che si apre il menu a tendina in automatico sono guai...
|
|