Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

Sample Service for Tutorial

  • 2 minutes to read

This topic describes the Issues Service. This service is used as a sample data source in this tutorial. Its API is similar to the StackExchange Questions API.

#Overview

The Issues Service is a static class:

public static class IssuesService {
    public async static Task<IssueData[]> GetIssuesAsync(int skip, int take, IssueSortOrder sortOrder, IssueFilter filter);
    public async static Task<UserData[]> GetUsersAsync();
    public async static Task<IssuesSummaries> GetSummariesAsync(IssueFilter filter);
    public async static Task UpdateRowAsync(IssueData row);
}

#GetIssuesAsync Method

The GetIssuesAsync method returns a task that allows you to get a page with the following data:

public class IssueData {
    public int Id { get; private set; }
    public string Subject { get; set; }
    public int UserId { get; set; }
    public DateTime Created { get; set; }
    public int Votes { get; set; }
    public Priority Priority { get; set; }
}

The Issues Service allows you to apply the following sort orders:

public enum IssueSortOrder {
    Default,
    CreatedDescending,
    VotesAscending,
    VotesDescending,
}

The Issues Service allows you to apply the following filters:

public class IssueFilter {
    public Priority? Priority { get; private set; }
    public DateTime? CreatedFrom { get; private set; }
    public DateTime? CreatedTo { get; private set; }
    public int? MinVotes { get; private set; }
}

#GetUsersAsync Method

The GetUsersAsync method returns a task that allows you to get a collection of users:

public class UserData {
    public int Id { get; }
    public string FirstName { get; }
    public string LastName { get; }
    public string FullName => FirstName + " " + LastName;
}

#GetSummariesAsync Method

The GetSummariesAsync method returns a task that allows you to get the total count of rows and the last created object’s datetime:

public class IssuesSummaries {   
    public int Count { get; private set; }
    public DateTime? LastCreated { get; private set; }
}

#UpdateRowAsync Method

The UpdateRowAsync method returns a task that allows you to commit changes to the data source.

#Miscellaneous

The GridControl displays a loading indicator during fetch operations because the Issues Service returns data with a short time delay:

public async static Task<IssueData[]> GetIssuesAsync(int skip, int take, IssueSortOrder sortOrder, IssueFilter filter) {
    await Task.Delay(300).ConfigureAwait(false);
    // ...
}
public async static Task<UserData[]> GetUsersAsync() {
    await Task.Delay(300).ConfigureAwait(false);
    // ...
}
public async static Task<IssuesSummaries> GetSummariesAsync(IssueFilter filter) {
    await Task.Delay(300).ConfigureAwait(false);
    // ...
}
public async static Task UpdateRowAsync(IssueData row) {
    // ...
    await Task.Delay(500).ConfigureAwait(false);
}