Virtualization in DropDown List
14 Jul 20233 minutes to read
The DropDownList component includes a virtual scrolling feature designed to enhance UI performance, particularly for handling large datasets. By enabling the EnableVirtualization option, the DropDownList intelligently manages data rendering, ensuring only a subset of items is initially loaded when the component is rendered. As you interact with the dropdown, additional items are dynamically loaded as you scroll, creating a smooth and efficient user experience.
This feature is applicable to both local and remote data scenarios, providing flexibility in its implementation. For instance, consider a case where the DropDownList is bound to a dataset containing 150 items. Upon opening the dropdown, only a few items are loaded initially, based on the height of the popup. As you scroll through the list, additional items are fetched and loaded on-demand, allowing you to effortlessly explore the complete dataset.
@using Syncfusion.Blazor.DropDowns
@using Syncfusion.Blazor.Data
<SfDropDownList TValue="string" TItem="Record" Placeholder="Select an item" DataSource="@Records" Query="@LocalDataQuery" PopupHeight="130px" EnableVirtualization="true">
<DropDownListFieldSettings Text="Text" Value="ID"></DropDownListFieldSettings>
</SfDropDownList>
@code{
public Query LocalDataQuery = new Query().Take(6);
public class Record
{
public string ID { get; set; }
public string Text { get; set; }
}
public List<Record> Records { get; set; }
protected override void OnInitialized()
{
this.Records = Enumerable.Range(1, 150).Select(i => new Record()
{
ID = i.ToString(),
Text = "Item " + i,
}).ToList();
}
}
Keyboard interaction
Users can navigate through the scrollable content using keyboard actions. This feature loads the next or next set of items based on the key inputs in the popup.
| Key | Action |
|---|---|
ArrowDown |
Loads the next virtual list item if the selection is present in last item of the current page. |
ArrowUp |
Loads the previous virtual list item if the selection is present in first item of the current page. |
PageDown |
Loads the next page and selects the last item in it. |
PageUp |
Loads the previous page and selects the first item in it. |
Home |
Loads the initial set of items and selects first item in it. |
End |
Loads the last set of items and selects last item in it. |
Limitation of virtualization
- Virtualization is not supported in the grouping feature.
- Selected Value may or may not be present in the current view port.
- Long-pressing of navigation keys is not intended for item navigation in the Dropdownlist component , It accepts single key action at a time.