商信互联
所述eXpressApp框架提供了各种方法来过滤列表视图:在数据源水平,经由应用程序模型和在UI特定水平。在每种方法中,您可能需要将静态变量设置为过滤条件值。例如,过滤器“ Task.DueDate必须设置为当前日期”需要使用CurrentDate变量,该变量在每次需要时进行计算。为此,请使用功能准则运算符。它们代表您可以在条件中使用的功能。在本主题中,您将学习为任务列表视图设置过滤条件时如何使用这些功能条件操作符。要查看内置的功能条件运算符的完整列表并了解如何实现自定义运算符,请参阅功能标准运算符主题。
由于使用函数标准运算符的技术对于任何过滤方法都是通用的,无论是在代码中还是在模型编辑器中,都将选择ListViewFilterAttribute进行演示。
回顾这个例子之前,请务必仔细阅读了一节的“日期时间函数标准对运营商的重要备注”功能标准运营的话题。
DevExpress代码示例数据库(http://www.devexpress.com/example=E3936)中提供了完整的示例项目。
以下代码演示了如何使用LocalDateTimeToday,LocalDateTimeLastWeek和LocalDateTimeThisWeek函数条件运算符实现各种过滤器:
using DevExpress.ExpressApp.Model;
using DevExpress.ExpressApp.SystemModule;
//...
[DefaultClassOptions]
[ListViewFilter("Today", "[DueDate] = LocalDateTimeToday()")]
[ListViewFilter("In three days", "[DueDate] >= ADDDAYS(LocalDateTimeToday(), -3) AND
[DueDate] < LocalDateTimeToday()")]
[ListViewFilter("In two weeks", "[DueDate] >= ADDDAYS(LocalDateTimeToday(), -14) AND
[DueDate] < LocalDateTimeToday()")]
[ListViewFilter("The last week", "[DueDate] > LocalDateTimeLastWeek() AND
[DueDate] <= ADDDAYS(LocalDateTimeLastWeek(), 5)")]
[ListViewFilter("This week", "[DueDate] > LocalDateTimeThisWeek() AND
[DueDate] <= ADDDAYS(LocalDateTimeThisWeek(), 5)")]
public class Task : BaseObject {
public Task(Session session) : base(session) {}
private DateTime dueDate;
[ModelDefault("EditMask","d")]
public DateTime DueDate {
get {
return dueDate;
}
set {
SetPropertyValue(nameof(DueDate), ref dueDate, value); }
}
}
Imports DevExpress.ExpressApp.Model
Imports DevExpress.ExpressApp.SystemModule
'...
<DefaultClassOptions, _
ListViewFilter("Today", "[DueDate] = LocalDateTimeToday()"), _
ListViewFilter("In three days", "[DueDate] >= ADDDAYS(LocalDateTimeToday(), -3) AND _
[DueDate] < LocalDateTimeToday()"), _
ListViewFilter("In two weeks", "[DueDate] >= ADDDAYS(LocalDateTimeToday(), -14) AND _
[DueDate] < LocalDateTimeToday()"), _
ListViewFilter("The last week", "[DueDate] > LocalDateTimeLastWeek() AND _
[DueDate] <= ADDDAYS(LocalDateTimeLastWeek(), 5)"), _
ListViewFilter("This week", "[DueDate] > LocalDateTimeThisWeek() AND _
[DueDate] <= ADDDAYS(LocalDateTimeThisWeek(), 5)")> _
Public Class Task
Inherits BaseObject
Public Sub New(ByVal session As Session)
MyBase.New(session)
End Sub
Private fDueDate As DateTime
<ModelDefault("EditMask","d")> _
Public Property DueDate() As DateTime
Get
Return fDueDate
End Get
Set(ByVal value As DateTime)
SetPropertyValue(NameOf(DueDate), fDueDate, value)
End Set
End Property
End Class
上面的代码为应用程序模型的Views | Views生成了几个Filter子节点。Task_ListView节点:
您可以在模型编辑器中手动生成这些节点。
下图演示了包含上面代码提供的所有过滤器的“过滤器操作”: