0
是否可以过滤Windows窗体应用程序中的列表框内容?在Windows窗体应用程序中过滤列表框
我的ListBox的数据源是包含了一堆的DTO的一个一个的BindingSource:
IList<DisplayDTO>
我想对在ListBox的DisplayMember指定的DTO属性筛选。
要过滤的文本在单独的文本框中提供。
是否可以过滤Windows窗体应用程序中的列表框内容?在Windows窗体应用程序中过滤列表框
我的ListBox的数据源是包含了一堆的DTO的一个一个的BindingSource:
IList<DisplayDTO>
我想对在ListBox的DisplayMember指定的DTO属性筛选。
要过滤的文本在单独的文本框中提供。
这应该工作:
private void textBox_TextChanged(object sender, EventArgs e)
{
bindingSource.Filter = string.Format("[{0}] LIKE '%{1}%'",
listBox.DisplayMember,
textBox.Text.Replace("'", "''"));
}
编辑:这只有当底层数据源(bindingSource.DataSource
)实现IBindingListView
。在FCL中,只有DataView
类实现此接口。
您可以通过继承BindingList<T>
来创建自己的实现。这里的an article解释了如何添加过滤器功能。您还可以在Google上找到SortableBindingList
的各种实施。
我试过你的建议,有一些变化,但仍然无法让它工作。我读过它可能与BindingSource中使用的容器有关。 将其更改为BindingList没有任何帮助。 – 2009-09-14 23:00:38
不幸的是,.NET框架提供的'BindingList'实现不支持排序和过滤......下面是一篇文章,介绍如何添加过滤器功能:http://www.nablasoft.com/alkampfer/index。 PHP/2008/11 /第22 /延伸-的BindingList与 - 过滤器的功能/。 –
2009-09-14 23:11:12
啊,欢呼队友:) – 2009-09-15 00:26:35