EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

自定义函数标准运算符

内置功能标准操作员涵盖了最常见的数据管理方案。此外,您可以为那些内置运算符不适合您的情况定义自定义功能标准运算符。例如,如果您经常使用特定的表达式,并且不想一遍又一遍地键入,则可以实现自定义的“函数条件运算符”。通过实现ICustomFunctionOperator接口的类来定义自定义函数条件运算符。该接口公开了三个成员,使您可以指定自定义函数并在客户端评估其值。该名称属性指定运营商定制的名称。在与resultType方法根据传递的参数的类型来计算自定义函数条件运算符的返回类型。该评估方法计算基础上,通过参数的函数标准操作价值。

public class WeekAgoOperator : ICustomFunctionOperator {
    public string Name {
        get { return "WeekAgo"; }
    }
    public object Evaluate(params object[] operands) {
        return DateTime.Today.AddDays(-7);
    }
    public Type ResultType(params Type[] operands) {
        return typeof(DateTime);
    }
}

要使用自定义功能标准运算符,您需要对其进行注册。为此,首先向操作员添加一个静态构造函数。在构造函数中,调用CriteriaOperator.RegisterCustomFunction方法。将此方法调用放置到静态构造函数中,可确保不会将操作员意外注册两次。

using DevExpress.Data.Filtering;
//...
public class WeekAgoOperator : ICustomFunctionOperator {
    //...
    static WeekAgoOperator() {
        WeekAgoOperator instance = new WeekAgoOperator();
        if (CriteriaOperator.GetCustomFunction(instance.Name) == null) {
            CriteriaOperator.RegisterCustomFunction(instance);
        }
    }
    public static void Register() { }
}

然后,在模块构造函数中调用此构造函数。

public sealed partial class MyModule : ModuleBase {
    public MyModule() {
        WeekAgoOperator.Register();
    }
}

注册功能条件运算符后,您可以在需要的任何地方使用它-在“列表视图”过滤器,“验证和外观”规则,对象级安全权限等中。例如,您可以通过“过滤器操作”创建一个“列表视图”过滤器,该操作将使用您的操作员,即仅选择最近7天内发货的物品。

送货日期> WeekAgo()

如果您的自定义功能条件运算符将在服务器端过滤中使用,则也支持ICustomFunctionOperatorFormattable接口。

请注意,自定义功能条件运算符可以在多个应用程序中使用。因此,建议您在单独的模块中实现所有必需的自定义功能条件运算符。

注意

http://www.devexpress.com/example=E3945上的DevExpress Code Central数据库中有一个如何创建自定义功能条件运算符的示例。根据目标平台类型(ASP.NET,WinForms等),您可以在线运行此示例,也可以下载自动可执行的示例。

转载保留此链接,注明出处