【问题标题】:Filtering DataGridview using DataSet -> BindingSource, extra columns later added使用 DataSet -> BindingSource 过滤 DataGridview,稍后添加额外的列
【发布时间】: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


【解决方案1】:

实际上,杰克做对了!我了解了 DataColumn.Expression 以及向 DataSet 中的 DataTable 添加列,这不会影响 TableAdapter。所以我就这么做了。太好了,谢谢!

【讨论】:

    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多