简单 BIndingSource 按日期时间属性筛选
本文关键字:属性 筛选 时间 日期 BIndingSource 简单 | 更新日期: 2023-09-27 18:31:38
是否可以在给定类型为 DateTime
的属性的情况下过滤BindingSource
?一些简单的东西,例如BindingSource.Filter = 'start_time Desc'
.
但是,这没有任何作用。我错过了什么吗?谢谢。
BindingSource.Filter
属性文档的"备注"部分摘录:
Filter 属性通常用于复杂的数据绑定方案,允许您查看数据源的子集。只有实现 IBindingListView 接口的基础列表才支持筛选。
当筛选器不为 null 时,绑定源将此属性传递给基础列表。如果在对象初始化期间设置此属性,则调用将延迟到初始化完成后。
若要形成筛选值,请指定列的名称,后跟运算符和要筛选的值。接受的筛选器语法取决于基础数据源。如果基础数据源是 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) + "#";