Back to Devexpress

DataSourceCriteriaPropertyAttribute Class

expressappframework-devexpress-dot-persistent-dot-base-5605bb83.md

latest7.2 KB
Original Source

DataSourceCriteriaPropertyAttribute Class

Specifies the CriteriaOperator used to filter source data for a reference, collection, or enumeration property.

Namespace : DevExpress.Persistent.Base

Assembly : DevExpress.ExpressApp.v25.2.dll

NuGet Package : DevExpress.ExpressApp

Declaration

csharp
[AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)]
public sealed class DataSourceCriteriaPropertyAttribute :
    ModelExportedValueAttribute
vb
<AttributeUsage(AttributeTargets.Property, Inherited:=True, AllowMultiple:=False)>
Public NotInheritable Class DataSourceCriteriaPropertyAttribute
    Inherits ModelExportedValueAttribute

Remarks

You can apply a DataSourceCriteriaPropertyAttribute to a reference, collection, or enumeration property of a business class.

Use DataSourceCriteriaPropertyAttribute.DataSourceCriteriaProperty to specify the name of a property that contains the CriteriaOperator.

csharp
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl.EF;
// ...
[DefaultClassOptions]
public class Order : BaseObject {
    [DataSourceCriteriaProperty(nameof(AccessoryCriteria))]
    public virtual Accessory Accessory { get; set; }
    public CriteriaOperator AccessoryCriteria {
        get { return CriteriaOperator.FromLambda<Accessory>(a => a.IsGlobal == true); }
    }
    //For enum properties
    [DataSourceCriteriaProperty(nameof(PendingConfirmedAndProcessingCriteria))]
    public virtual OrderStatus Status { get; set; }

    public CriteriaOperator PendingConfirmedAndProcessingCriteria
        => CriteriaOperator.FromLambda(o => o.Status==OrderStatus.Pending || o.Status==OrderStatus.Confirmed|| o.Status==OrderStatus.Processing);
public class Accessory : BaseObject {
    public virtual bool IsGlobal { get; set; }
}
public enum OrderStatus {
    Pending,
    Confirmed,
    Processing,
    Shipped,
    Delivered,
    Canceled,
    Returned
}

// Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.
csharp
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
// ...
[DefaultClassOptions]
public class Order : BaseObject {
    private Accessory fAccessory;
    [DataSourceCriteriaProperty(nameof(AccessoryCriteria))]
    public Accessory Accessory {
        get { return fAccessory; }
        set {
            SetPropertyValue(nameof(Accessory), ref fAccessory, value);
        }
    }
    public CriteriaOperator AccessoryCriteria {
        get { return CriteriaOperator.FromLambda<Accessory>(a => a.IsGlobal == true); }
    }
    //For enum properties
    private OrderStatus fStatus;
    [DataSourceCriteriaProperty(nameof(PendingConfirmedAndProcessingCriteria))]
    public OrderStatus Status {
        get { return fStatus; }
        set {
            SetPropertyValue(nameof(Status), ref fStatus, value);
        }
    }
    public CriteriaOperator PendingConfirmedAndProcessingCriteria
        => CriteriaOperator.FromLambda(o => o.Status==OrderStatus.Pending || o.Status==OrderStatus.Confirmed|| o.Status==OrderStatus.Processing);
}
public class Accessory : BaseObject {
    // ...
    private bool fIsGlobal;
    public bool IsGlobal {
        get { return fIsGlobal; }
        set {
            SetPropertyValue(nameof(IsGlobal), ref fIsGlobal, value);
        }
    }
}
public enum OrderStatus {
    Pending,
    Confirmed,
    Processing,
    Shipped,
    Delivered,
    Canceled,
    Returned
}

DataSourceCriteriaPropertyAttribute overrides DataSourceCriteriaAttribute when both attributes are applied to the same property.

Application Model

DataSourceCriteriaProperty property value is assigned to the corresponding property of the Application Model. You can specify the property value directly in the Model Editor at the following path: BOModel | <Class> | OwnMembers | <Member>.

Inheritance

Object Attribute DevExpress.Persistent.Base.ModelExportedValueAttribute DataSourceCriteriaPropertyAttribute

See Also

DataSourceCriteriaPropertyAttribute Members

DataSourceCriteriaAttribute

DataSourcePropertyAttribute

Data Filtering

Ways to Build Criteria

Function Criteria Operators

DevExpress.Persistent.Base Namespace