WPF autocomplet i filtrowanie wyników

WPF autocomplet i filtrowanie wyników
JU
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

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

AL
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 miesiące
  • Postów:308
0

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

JU
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

No, dobrze, wiem jak uzupełnić dane, jednak jak spowodować, żeby użytkownik mógł wpisywać tekst do filtrowania?

MA
  • Rejestracja:około 17 lat
  • Ostatnio:4 miesiące
  • Lokalizacja:Poznań
0

Możesz użyć też biblioteki: http://www.codeproject.com/Articles/293954/AutoSuggest-and-AutoComplete-control-in-WPF i zobaczyć jak to działa.

P0
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 9 lat
  • Postów:57
0

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).

Kopiuj
<ComboBox x:Name="_comboBox_db" IsEditable="True" TextBoxBase.TextChanged="_comboBox_db_textchanged" ItemsSource={Binding SprawdzanaKolumna} />
Kopiuj
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;
...
}
 
edytowany 1x, ostatnio: Pawlak007

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.