商信互联
本主题演示了在XAF应用程序中使用任何过滤技术时创建标准的选项。
当需要将条件设置为CriteriaOperator对象时,可以使用以下选项:
使用XPO提供的条件运算符。您可以使用几个XPO条件运算符来构建所需的条件。以下代码演示了如何使用BinaryOperator构建简单的条件:
using DevExpress.Data.Filtering;
//...
// The criteria that represents a logical expression (City <> "Chicago")
// is represented by the BinaryOperator and two operands.
CriteriaOperator criteria = new BinaryOperator(
new OperandProperty("City"), new OperandValue("Chicago"),
BinaryOperatorType.NotEqual);
Imports DevExpress.Data.Filtering
'...
' The criteria that represents a logical expression (City <> "Chicago")
' is represented by the BinaryOperator and two operands.
Dim criteria As CriteriaOperator = New BinaryOperator( _
New OperandProperty("City"), New OperandValue("Chicago"), _
BinaryOperatorType.NotEqual)
使用CriteriaOperator.Parse方法。您可以将条件表示为人类可读的字符串,并使用静态CriteriaOperator.Parse方法对其进行解析。
using DevExpress.Data.Filtering;
//...
//The criteria that represents a logical expression (City <> "Chicago") is represented by a string.
CriteriaOperator criteria = CriteriaOperator.Parse("City != 'Chicago'");
Imports DevExpress.Data.Filtering
'...
'The criteria that represents a logical expression (City <> "Chicago") is represented by a string.
Dim criteria As CriteriaOperator = CriteriaOperator.Parse("City != 'Chicago'")
要了解CriteriaOperator.Parse方法中使用的语法,请参阅“标准语言语法”帮助主题。
有关如何使用XPO技术构建标准的详细信息,请参考以下链接:
在需要将条件指定为字符串的任何地方,都应设置可以由静态CriteriaOperator.Parse方法解析的字符串。要了解此方法中使用的语法,请参阅“标准语言语法”帮助主题。
您应该在其中将条件指定为字符串的位置包括“模型编辑器”中的属性,以及代码中的属性以及不同的属性和方法。
以下代码演示了如何为Action的ActionBase.TargetObjectsCriteria属性设置条件。下面的控制器使得当所选任务的DueUtate属性值小于或等于系统日期和时间时:
public partial class MyController : ViewController {
private void MyController_AfterConstruction(object sender, EventArgs e) {
TargetObjectType = typeof(Task);
MyAction.SelectionDependencyType = SelectionDependencyType.RequireMultipleObjects;
MyAction.TargetObjectsCriteria = "DueDate <= LocalDateTimeNow()";
}
}
Public Partial Class MyController
Inherits ViewController
Private Sub MyController_AfterConstruction(ByVal sender As Object, ByVal e As EventArgs)
TargetObjectType = GetType(Task)
MyAction.SelectionDependencyType = SelectionDependencyType.RequireMultipleObjects
MyAction.TargetObjectsCriteria = "DueDate <= LocalDateTimeNow()"
End Sub
End Class
下图演示了如何在模型编辑器中指定TargetObjectsCriteria属性:
XAF提供以下字符串属性编辑器,用于可视化地构造过滤条件(请参阅Criteria Properties):
Windows窗体条件属性编辑器:
ASP.NET条件属性编辑器:
这些属性编辑器可用于表示以CriteriaOptionsAttribute属性修饰的字符串属性。下图说明了PopupCriteriaPropertyEditor:
相应的条件字符串为:
[DueDate] <= LocalDateTimeNow()和[Status] ='Completed'
重要概念是,条件属性编辑器可以生成包含XAF特定对象参数的条件字符串。XPO提供的CriteriaOperator.Parse方法无法解析此类条件字符串。您应该使用CriteriaEditorHelper帮助器类公开的GetCriteriaOperator方法,以获取相应的CriteriaOperator对象:
CriteriaOperator criteria =
CriteriaEditorHelper.GetCriteriaOperator(criteriaString, dataType, objectSpace);
Dim criteria As CriteriaOperator = _
CriteriaEditorHelper.GetCriteriaOperator(criteriaString, dataType, objectSpace)
请参阅“如何:使用条件属性编辑器”主题以查看完整的示例。本主题还提供了ASP.NET应用程序中当前“条件属性编辑器”限制的列表。