Witam!
Stworzyłem comboboxa zapełnianego przez bazę danych.
Jednak mam bardzo dużo wpisów, chciał bym więc zawsze wyświetlać 10-15 wyników.
W jaki sposób filtrować za informacje wyświetlane w comboboxie, tak abym po wpisaniu np 123 otrzymał wyniki:
np:
123
9123
a123
aaa123
zz123
itd..?
Z góry dziękuje za pomoc
Pozdrawiam
- Rejestracja:około 12 lat
- Ostatnio:ponad 6 lat
- Postów:149
- Rejestracja:prawie 12 lat
- Ostatnio:2 miesiące
- Postów:308
może: http://stackoverflow.com/questions/2602252/mysql-query-string-contains ?
jeśli trzymasz gdzieś już te wyniki (np w List) to przeleć foreach i jeśli zawiera wpisany ciąg znaków to dodaj jako item do comboboxa
- Rejestracja:około 12 lat
- Ostatnio:ponad 6 lat
- Postów:149
No, dobrze, wiem jak uzupełnić dane, jednak jak spowodować, żeby użytkownik mógł wpisywać tekst do filtrowania?
- Rejestracja:około 17 lat
- Ostatnio:4 miesiące
- Lokalizacja:Poznań
Możesz użyć też biblioteki: http://www.codeproject.com/Articles/293954/AutoSuggest-and-AutoComplete-control-in-WPF i zobaczyć jak to działa.
- Rejestracja:prawie 12 lat
- Ostatnio:około 9 lat
- Postów:57
Może ustawić właściwość IsEditable dla kontrolki ComboBox na true. Ustawić obsługę zdarzenia TextBoxBase.TextChanged, a tam wprowadzić filtrowanie danych (po każdej wprowadzonej literce nastąpi wywołanie takiego zdarzenia - dla 20-30 rekordów działa to momentalnie, dla większej ilości nie sprawdzałem).
<ComboBox x:Name="_comboBox_db" IsEditable="True" TextBoxBase.TextChanged="_comboBox_db_textchanged" ItemsSource={Binding SprawdzanaKolumna} />
private void _comboBox_db_textchanged(...)
{
...
list = from OBIEKT ob in BazaDanych.ListaObiektow
where ob.SprawdzanaKolumna.Contains(_comboBox_db.Text)
select ob.SprawdzanaKolumna;
_comboBox_db.ItemsSource = list;
...
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.