【问题标题】:Simple BIndingSource Filter by DateTime Property按 DateTime 属性的简单 BIndingSource 过滤器
【发布时间】:2016-05-01 06:39:31
【问题描述】:

是否可以在给定DateTime 类型的属性的情况下过滤BindingSource?一些简单的东西,例如BindingSource.Filter = 'start_time Desc'

但是,这无济于事。我错过了什么吗?谢谢。

【问题讨论】:

标签: c# winforms


【解决方案1】:

摘自BindingSource.Filter属性documentation备注部分:

通常用于复杂的数据绑定场景,Filter 属性允许您查看 DataSource 的子集。 只有实现了 IBindingListView 接口的底层列表才支持过滤。

当 Filter 不为 null 时,BindingSource 将此属性传递给基础列表。如果在对象初始化期间设置此属性,调用将延迟到初始化完成后。

要形成过滤器值,指定列名,后跟运算符和要过滤的值。接受的过滤器语法取决于底层数据源。如果基础数据源是 DataSet、DataTable 或 DataView,您可以使用为 DataColumn.Expression 属性记录的语法指定布尔表达式。

我用粗体突出了重要部分。如您所见,BindingSource 本身不提供过滤功能。它是否受支持以及语法取决于基础数据源,即您设置为 BindinigSource.DataSource 属性的那个。

下一个在您使用DataTable (DataView) 作为基础源时适用。然后如上所述,您可以使用此处描述的语法DataColumn.Expression Property

注意事项:

  • 等式运算符是 =(不是 C# 中的 ==
  • 日期值必须包含在#
  • 所有文字表达式必须在不变的文化语言环境中表达。

例如,在您的示例中按特定的 start_time 值过滤可能是这样的

DateTime startTime = ...;
BindingSource.Filter = "start_time = #" + startTime.ToString(CultureInfo.InvariantCulture) + "#";

【讨论】:

  • 您好,感谢您的回复。 startTime 变量已绑定到 DataGridView。我在原始问题中犯了一个错误。我正在尝试Sort 更改一个值后的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多