Skip to main content
A newer version of this page is available. .

CollectionSourceBase.Mode Property

Indicates the Collection Source’s mode of operation.

Namespace: DevExpress.ExpressApp

Assembly: DevExpress.ExpressApp.v19.1.dll

Declaration

public CollectionSourceMode Mode { get; }

Property Value

Type Description
CollectionSourceMode

A CollectionSourceMode enumeration value specifying the Collection Source’s mode of operation.

Available values:

Name Description
Normal

A collection of objects of the specified type is created by the CollectionSourceBase.ObjectSpace. For instance, the XPObjectSpace creates an XPCollection. When filtering is applied, the corresponding criteria is directly applied to the underlying collection. So, in this mode, if you iterate over the collection represented by a List View, you will only see the filtered objects.

Proxy

Two collections are created for a Collection Source. The first one is an original collection created by the Object Space. The second one is a intermediate proxy collection. The proxy collection represents the original collection’s wrapper, because it implements several interfaces that are required in different built-in features. When filtering is applied to the collection that a Collection Source represents, the criteria are not directly applied to the original collection, instead they are applied to the proxy collection. So, in this mode, if you iterate over the collection represented by the CollectionSourceBase.Collection property, you will see only filtered objects. But you can iterate over the original collection to access all objects belonging to the collection.

Remarks

The Mode property indicates the mode in which the current Collection Source is created. The following modes are possible:

  • Normal

    A collection of objects of the specified type is created by the CollectionSourceBase.ObjectSpace. For instance, the XPObjectSpace creates an XPCollection. All operations, e.g. filtering, are applied to it. This collection is accessible using the CollectionSourceBase.Collection property.

  • Proxy

    Two collections are created. The first one is an original collection created by the Object Space. The second one is an intermediate proxy collection. It represents the original collection’s wrapper, because it implements several interfaces that are required for different built-in features. The CollectionSourceBase.Collection property returns the proxy collection.

Suppose you have filtered a List View via the ListViewFilterAttribute. In Normal mode, if you iterate over the collection represented by the List View, you will only see the filtered objects. This is because in this mode, when the Collection Source’s collection is filtered, the corresponding criteria is directly applied to the collection. In Proxy mode, the criteria are not directly applied to the original object collection. Instead, the filter criteria are applied to the proxy collection. So, in this mode, the underlying collection is unaffected and if you iterate over it, you will see all objects belonging to the collection.

To access the original collection of the Collection Source that is created in the Proxy mode, use the following code:

private PropertyCollectionSource propertyCollectionSource;
//...
    propertyCollectionSource = ((ListView)View).CollectionSource as PropertyCollectionSource;
    if (propertyCollectionSource != null) {
        propertyCollectionSource.CollectionChanged += 
            new EventHandler(propertyCollectionSource_CollectionChanged);
    }
//...
void propertyCollectionSource_CollectionChanged(object sender, EventArgs e) {
    XPBaseCollection collection = propertyCollectionSource.MemberInfo.GetValue(
        propertyCollectionSource.MasterObject) as XPBaseCollection;
    //Access the collection object here.
}

The Mode property does not affect control-specific filtering features. For instance, the GridControl used by the GridListEditor, allows end-users to filter data via the auto filter row and filter panel. When end-users use these features, filtering is performed on the control level and is not reflected in the Collection Source.

Note

When a Collection Source is created in Server mode (see CollectionSourceBase.DataAccessMode), the Mode property is automatically set to Normal, because a proxy collection cannot be used.

When a Collection Source is created, the Mode property is set to Proxy, by default. However, you can apply the CollectionSourceModeAttribute to an individual collection property to indicate which mode is required for the Collection Source that will be created for the nested List View representing the collection. Additionally, when you have to create a Collection Source in code, you can use a constructor with the mode parameter.

See Also