Skip to main content
All docs
V24.2

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

DxListEditorBase<TData, TValue>.CustomData Property

Specifies an asynchronous function that loads a list editor’s data based on the specified load options.

Namespace: DevExpress.Blazor.Base

Assembly: DevExpress.Blazor.v24.2.dll

NuGet Package: DevExpress.Blazor

#Declaration

C#
[Parameter]
public Func<DataSourceLoadOptionsBase, CancellationToken, Task<LoadResult>> CustomData { get; set; }

#Property Value

Type Description
Func<DevExtreme.AspNet.Data.DataSourceLoadOptionsBase, CancellationToken, Task<DevExtreme.AspNet.Data.ResponseModel.LoadResult>>

A delegate that implements data load logic.

#Remarks

To bind a list editor (ComboBox, List Box, TagBox) to data that is stored on a remote service and is loaded through a Web API, assign the data type to the component’s T parameter and use the CustomData property to implement data load logic. This property specifies an asynchronous function that accepts two parameters:

In this function, you can use the ConvertToGetRequestUri and ConvertToHttpContent extension methods to generate HTTP requests with parameters based on data load options. The function should return a Task<LoadResult> object.

Note that if you use the CustomData property and virtual list render mode, the data item collection can include fake items for items that are still loading.

#Implement a Controller

On a remote service, implement an API controller and create action methods that use the DevExtreme.AspNet.Data library’s DataSourceLoader class to create a LoadResult object based on load options. If you pass a DataSourceLoadOptions class instance as an argument in controller actions, add a reference to the DevExtreme.AspNet.Mvc namespace from the DevExtreme.AspNet.Core NuGet package.

#ComboBox

@using CustomData.Data
@using DevExtreme.AspNet.Data
@using DevExtreme.AspNet.Data.ResponseModel
@using System.Threading
@using System.Threading.Tasks
@using System.Net.Http
@using System.Text.Json

<DxComboBox TData=WebApiLookup 
            TValue=System.String
            CustomData="@LoadCustomData"
            @bind-Value="@Value"
            TextFieldName="Text" >
</DxComboBox>

@code {
    string Value { get; set; }
    [Inject] protected HttpClient Client { get; set; }

    protected Task<LoadResult> LoadCustomData(DataSourceLoadOptionsBase options, CancellationToken cancellationToken) {
        return CustomDataHelper.LoadCustomData(Client, options, cancellationToken);
    }
}

ComboBox CustomData

View Example: Data Editors for Blazor - Custom data binding

#List Box

@using CustomData.Data
@using DevExtreme.AspNet.Data
@using DevExtreme.AspNet.Data.ResponseModel
@using System.Threading
@using System.Threading.Tasks
@using System.Net.Http
@using System.Text.Json

<DxListBox TData="@(WebApiLookup)" 
           TValue="string"
           CustomData="@LoadCustomData"
           TextFieldName="Text" >
</DxListBox>

@code {
    [Inject] protected HttpClient Client { get; set; }

    protected Task<LoadResult> LoadCustomData(DataSourceLoadOptionsBase options, CancellationToken cancellationToken) {
        return CustomDataHelper.LoadCustomData(Client, options, cancellationToken);
    }
}

ListBox CustomData

View Example: Data Editors for Blazor - Custom data binding

#TagBox

@using CustomData.Data
@using DevExtreme.AspNet.Data
@using DevExtreme.AspNet.Data.ResponseModel
@using System.Threading
@using System.Threading.Tasks
@using System.Net.Http
@using System.Text.Json

<DxTagBox TData="@WebApiLookup" 
          TValue="string"
          CustomData="@LoadCustomData"
          TextFieldName="Text" >
</DxTagBox>

@code {
    string Value { get; set; }
    [Inject] protected HttpClient Client { get; set; }

    protected Task<LoadResult> LoadCustomData(DataSourceLoadOptionsBase options, CancellationToken cancellationToken) {
        return CustomDataHelper.LoadCustomData(Client, options, cancellationToken);
    }
}

TagBox CustomData

View Example: Data Editors for Blazor - Custom data binding

#Implements

DevExpress.Blazor.IListEditorBase<TData, TValue>.CustomData
See Also