Back to Devexpress

DataSourceCriteriaAttribute Class

expressappframework-devexpress-dot-persistent-dot-base-3e967e04.md

latest8.5 KB
Original Source

DataSourceCriteriaAttribute Class

Specifies the criteria expression 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 DataSourceCriteriaAttribute :
    ModelExportedValueAttribute
vb
<AttributeUsage(AttributeTargets.Property, Inherited:=True, AllowMultiple:=False)>
Public NotInheritable Class DataSourceCriteriaAttribute
    Inherits ModelExportedValueAttribute

Remarks

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

Use DataSourceCriteriaAttribute.DataSourceCriteria to specify filter criteria. You can use function criteria operators and the current object parameter. Refer to the following help topic for more information about building criteria: Ways to Build Criteria.

csharp
using DevExpress.Data.Filtering;
//...
EnumProcessingHelper.RegisterEnum<OrderStatus>();
csharp
using DevExpress.Persistent.BaseImpl.EF;
using System.ComponentModel.DataAnnotations;
// ...
[DefaultClassOptions]
    public class Order : BaseObject {
        [DataSourceCriteria("IsGlobal = true")]
        public virtual Accessory Accessory { get; set; }

        //For enum property
        [DataSourceCriteria("Status = ##Enum#MyNamespace.OrderStatus,Pending# or Status = ##Enum#MyNamespace.OrderStatus,Confirmed# or Status = ##Enum#MyNamespace.OrderStatus,Processing#")]
        public virtual OrderStatus Status { get; set; }
    }

    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.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
// ...
[DefaultClassOptions]
public class Order : BaseObject {
    // ...
    private Accessory fAccessory;
    [DataSourceCriteria("IsGlobal = true")]
    public Accessory Accessory {
        get {
            return fAccessory;
        }
        set {
            SetPropertyValue(nameof(Accessory), ref fAccessory, value);
        }
    }
    //For enum property
    private OrderStatus fStatus;
    [DataSourceCriteria("Status = ##Enum#MyNamespace.OrderStatus,Pending# or Status = ##Enum#MyNamespace.OrderStatus,Confirmed# or Status = ##Enum#MyNamespace.OrderStatus,Processing#")]
    public OrderStatus Status {
        get {
            return fStatus;
        }
        set {
            SetPropertyValue(nameof(Status), ref fStatus, value);
        }
    }
}
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
}

Application Model

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

Important Notes

  • The criteria specified by the DataSourceCriteria attribute in a base business class remains applied in descendants.

  • DataSourceProperty and DataSourceCriteria attributes do not affect visibility of objects added to a lookup via the New action.

  • In DataSourceCriteria, \@This refers to the master object (for which the lookup editor is displayed) even if the lookup editor displays a complex property. For example, if the property is Task.Project.Manager, then \@This refers to Task and not to Project.

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

  • When applying DataSourceCriteriaAttribute to an enumeration property, the left part of the criteria string must match the property name.

Inheritance

Object Attribute DevExpress.Persistent.Base.ModelExportedValueAttribute DataSourceCriteriaAttribute

See Also

DataSourceCriteriaAttribute Members

How to: Implement Cascading Filtering for Lookup List Views

Adjust Data Sources for Reference and Collection Properties

DataSourcePropertyAttribute

DataSourceCriteriaPropertyAttribute

Data Filtering

Ways to Build Criteria

Function Criteria Operators

View Items and Property Editors

DevExpress.Persistent.Base Namespace