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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top