2011-04-29 67 views
1

对于WinForms VB.Net应用程序,我使用Bindingsource的过滤容量来过滤DataGridview中看到的数据。 BindingSource来自DataSet,使用Designer创建,数据来自Access数据库,使用JetEngine和.Net 3.5。所以基本上:使用DataSet过滤DataGridview - > BindingSource,后来添加了额外的列

Datagridview.Datasource = xxBindingSource 
xxBindingsource.Filter = "[extended filter string with multiple columns]" 

这种过滤工作得很好,不过,我现在包含在DataGridView,我想过滤的,也有些额外列。当然,当我将手动添加的列提供给BindingSource的Filter时,这不起作用。

我已经做了一些研究,但无法找到任何方式在DataGridview上使用BindingSource的过滤语法。我想使用这个语法,因为我设计了一个很好的UserControl和类,以提供流畅,快速和简单的过滤功能。这里有什么建议?

另一种选择是重写这部分,并使用其他形式的过滤。任何人都可以指点我一些最佳做法?

+0

您是否在绑定之前尝试将这些列添加到DataSet中? – Jack 2011-04-29 13:41:26

+0

我可以将列添加到具有Access数据源的DataSet的数据集吗?我不需要这个列最终在数据库本身,因为它不包含额外的信息,只是一些计算/获得的值。 – BertvanDorp 2011-04-29 13:57:00

+0

'DataSet'只是内存中的一个对象,从数据库中检索后,您可以随心所欲地执行任何操作。唯一会遇到麻烦的地方是,如果您使用数据集更新数据库并生成更新语句,而该语句不会意识到您的更改。 – Jack 2011-04-29 14:17:36

回答

0

其实,杰克说得对!我了解了DataColumn.Expression和有关向DataSet中的DataTable添加列的内容,但这不会影响TableAdapter。所以我就是这么做的。万分感谢!