简单 BIndingSource 按日期时间属性筛选

本文关键字:属性 筛选 时间 日期 BIndingSource 简单 | 更新日期: 2023-09-27 18:31:38

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

但是,这没有任何作用。我错过了什么吗?谢谢。

简单 BIndingSource 按日期时间属性筛选

BindingSource.Filter属性文档的"备注"部分摘录:

Filter 属性通常用于复杂的数据绑定方案,允许您查看数据源的子集。只有实现 IBindingListView 接口的基础列表才支持筛选。

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

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

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

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

需要注意的一些事项:

  • 相等运算符是=(不像 C# 中那样==
  • 日期值必须括在#
  • 所有文本表达式都必须在固定区域性区域设置中表示。

例如,在您的示例中按特定start_time值进行筛选可能是这样的

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