expressappframework-113683-ui-construction-views-list-view-data-access-modes.md
XAF uses the following default data access modes:
You can activate other modes to optimize how a List View loads and processes data:
The following table explains these different modes:
| |
|
|
|
|
|
|
| | --- | --- | --- | --- | --- | --- | --- | --- | |
Platform
| | | | | | | | |
Blazor
|
|
|
|
|
|
|
| |
WinForms
|
| |
|
|
|
|
| |
ORM
| | | | | | | | |
EF Core
|
|
|
|
|
|
|
| |
XPO
|
|
|
|
|
|
|
| |
Supported ListEditors
| | | | | | | | |
Blazor Grid
|
|
|
|
|
|
|
| |
Blazor Lookup
|
|
| | | | | | |
Blazor Tree List
|
|
| | | | | | |
Blazor Chart
|
| | | |
| | | |
Blazor Scheduler
|
| | | | | | | |
WinForms Grid
|
| |
|
|
|
|
| |
WinForms Tree List
|
|
| | | | | | |
WinForms Scheduler
|
| | | |
| | | |
WinForms Pivot Grid
|
| | | |
| | | |
Processed Object
| | | | | | | | |
Original Object
|
|
|
| | | | | |
ObjectRecord
| | | |
| |
|
| |
XafDataViewRecord
| | | | |
| | | |
Columns Available for Processing
| | | | | | | | |
Displayed Columns
|
|
|
|
|
|
|
| |
Column from the Model
|
| |
| | | | | |
Displayable Collection Properties
| | | |
| |
|
| |
Initially Loaded Objects
| | | | | | | | |
All
|
| | | |
| | | |
Displayed
| |
|
|
| |
|
| |
Non-persistent Properties
| | | | | | | | |
Fully Supported
|
| | | | | | | |
Supported with Limitations
| |
|
|
|
|
|
| |
Additional Capabilities
| | | | | | | | |
Async Loading
| | | | | |
|
| |
In-place Editing
|
|
|
| | | | |
For additional information about a specific data access mode, navigate to the corresponding help article.
The following video explains the best ways to access and manipulate data in XAF, and how to build high-performance apps.
Non-persistent properties return a value calculated at runtime or store a temporary value in memory. The following list describes their limitations in various data access modes:
To use non-persistent properties in these modes, decorate them with the DevExpress.Xpo.PersistentAliasAttribute (XPO) or DevExpress.ExpressApp.DC.PersistentAliasAttribute (EF Core). For more information, refer to the following KB article: Is it possible to avoid the “Cannot query a data store using criterion (…)” error and be able to filter, sort and group by non-persistent fields in server mode?.
To specify a List View’s data access mode, invoke the Model Editor, navigate to the Views | <ListView> node, and set the IModelListView.DataAccessMode property to the required CollectionSourceDataAccessMode value.
DataAccessMode‘s combo box displays only modes that are compatible with the selected List Editor (a node’s EditorType property). If you use a custom List Editor, specify its supported modes in the static DataAccessModeHelper.RegisterEditorSupportedModes method. Call this method from code executed at design time before the Model Editor is loaded (for example, from a Module’s constructor). Pass the List Editor’s type and a list of supported modes to this method. Otherwise, the Model Editor shows all modes for this List Editor.
using System.Collections.Generic;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Utils;
// ...
public sealed partial class MySolutionWinModule : ModuleBase {
public MySolutionWinModule() {
// ...
DataAccessModeHelper.RegisterEditorSupportedModes(typeof(CustomListEditor),
new List<CollectionSourceDataAccessMode> { CollectionSourceDataAccessMode.Client, CollectionSourceDataAccessMode.Server });
}
// ...
}
To change the data access mode for all List Views in an application (except for autogenerated nested List Views), invoke the Model Editor, navigate to the Options node, and specify its DataAccessMode property. To specify the data access mode for nested List Views, set the IModelListView.DataAccessMode property for each nested List View node as described above.
Note
See Also
Server, ServerView, InstantFeedback, and InstantFeedbackView Modes