Filtraggio delle caselle di riepilogo in un'applicazione Windows Form
-
07-07-2019 - |
Domanda
È possibile filtrare il contenuto di una casella di riepilogo in un'applicazione Windows Form?
La DataSource del mio ListBox è una BindingSource contenente un gruppo di DTO in un:
IList<DisplayDTO>
Voglio filtrare la proprietà DTO specificata nel DisplayMember di ListBox.
Il testo da filtrare è fornito in una casella di testo separata.
Soluzione
Questo dovrebbe funzionare:
private void textBox_TextChanged(object sender, EventArgs e)
{
bindingSource.Filter = string.Format("[{0}] LIKE '%{1}%'",
listBox.DisplayMember,
textBox.Text.Replace("'", "''"));
}
EDIT: funziona solo se l'origine dati sottostante (bindingSource.DataSource
) implementa IBindingListView
. Nella FCL, solo la classe DataView
implementa questa interfaccia.
Puoi creare la tua implementazione ereditando da BindingList<T>
. Ecco un articolo che spiega come aggiungere la funzionalità di filtro. Puoi anche trovare varie implementazioni di SortableBindingList
su Google.