InfiniteAsyncSource.FetchRows Event
Allows you to fetch rows.
Namespace: DevExpress.Xpf.Data
Assembly: DevExpress.Xpf.Core.v24.2.dll
NuGet Package: DevExpress.Wpf.Core
#Declaration
public event EventHandler<FetchRowsAsyncEventArgs> FetchRows
#Event Data
The FetchRows event's data class is FetchRowsAsyncEventArgs. The following properties provide information specific to this event:
Property | Description |
---|---|
Allow |
Gets or sets whether re-requesting data is allowed.
Inherited from Fetch |
Filter |
Gets the Grid |
Keys |
Gets keys that you passed to the Reload |
Result | Gets or sets the result of the fetch rows operation. |
Skip |
Gets the number of rows to skip in a returned result set.
Inherited from Fetch |
Skip |
Gets the skip token.
Inherited from Fetch |
Sort |
Gets the Grid |
Take |
Gets the number of rows within and above the viewport that are reloaded when you call the Refresh |
#Remarks
To fetch rows from the data source:
- Handle the FetchRows event.
- Obtain data.
- Create the FetchRowsResult class object and specify the FetchRowsAsyncEventArgs.Result property.
public MainWindow() {
// ...
source.FetchRows += (o, e) => {
e.Result = FetchRowsAsync(e);
};
}
static async Task<FetchRowsResult> FetchRowsAsync(FetchRowsAsyncEventArgs e) {
IssueSortOrder sortOrder = GetIssueSortOrder(e);
IssueFilter filter = MakeIssueFilter(e.Filter);
var take = e.Take ?? 30;
var issues = await IssuesService.GetIssuesAsync(
skip: e.Skip,
take: take,
sortOrder: sortOrder,
filter: filter);
return new FetchRowsResult(issues, hasMoreRows: issues.Length == take);
}
static IssueSortOrder GetIssueSortOrder(FetchRowsAsyncEventArgs e) {
return IssueSortOrder.Default;
}
static IssueFilter MakeIssueFilter(CriteriaOperator filter) {
return null;
}
The FetchRowsEventArgsBase.Take property returns the number of rows that should be reloaded. Use this property to allow the InfiniteAsyncSource to retain a selected row and scroll position after refresh. The PagedAsyncSource automatically retains a selected row and scroll position.
If data in your source are changed frequently, you can retain the same selected row after refresh. Specify the VirtualSourceBase.KeyProperty property to make a virtual source find the selected row by a specific field.
If you want to maintain a clean MVVM pattern and specify a fetch operation in a ViewModel, create a command and bind it to the InfiniteAsyncSource.FetchRowsCommand property.
#Related GitHub Examples
The following code snippets (auto-collected from DevExpress Examples) contain references to the FetchRows event.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.