【发布时间】:2011-04-29 13:35:04
【问题描述】:
对于 WinForms VB.Net 应用程序,我使用 Bindingsource 的过滤能力来过滤数据,这在 DataGridview 中可以看到。 BindingSource 来自使用 Designer 创建的 DataSet,数据来自使用 JetEngine 和 .Net 3.5 的 Access DB。所以基本上:
Datagridview.Datasource = xxBindingSource
xxBindingsource.Filter = "[extended filter string with multiple columns]"
此过滤工作正常,但是,现在我在 DataGridView 中添加了一些额外的列,我也想对其进行过滤。当然,当我将手动添加的列提供给 BindingSource 的过滤器时,这是行不通的。
我进行了一些研究,但无法找到在 DataGridview 上使用 BindingSource 过滤语法的任何方法。不过我想使用这种语法,因为我设计了一个相当不错的 UserControl 和围绕它的类,以提供流畅、快速和简单的过滤功能。这里有什么建议吗?
另一种选择是重写这部分,并使用其他形式的过滤。谁能指出一些最佳做法?
【问题讨论】:
-
您是否尝试在绑定之前将这些列添加到您的
DataSet? -
我可以将一列添加到具有用于源的 Access DB 的数据集中吗?我不需要此列在数据库本身中结束,因为它不包含额外信息,只是一些计算/获取的值。
-
DataSet只是从数据库中检索到内存中的一个对象,你可以为它做任何你想做的事情。唯一遇到麻烦的地方是,如果您使用数据集更新数据库并生成更新语句,而不会知道您的更改。 -
@Jack 感谢您的回复!嗯,这就是事实:我使用内存中的数据集来更新数据库。仅使用一个 tableadapter,并在每个表中发送 .GetChanges。是否可以更改它以允许在 DataSet 中添加列?
标签: .net vb.net datagridview filtering bindingsource