ASP.NET MVC ComboBox - Virtual Scrolling

The items of the ComboBox can be loaded on-demand (via AJAX requests). The advantage of using this approach is that the items are loaded only when the end user types something into the input field. Thus, the page will load very fast because no item is loaded on page load.

In order to enable the on demand loading feature, set the EnableLoadOnDemand property to true. You also need to specify an action method that will be used to load the items on demand, using the OnLoadingItems property. This action method will load all the items that match the text typed in the input field.

To improve the performance even further, you can use the "paging" approach for the load on demand feature. Using this approach will force the ComboBox to load only a limited number at a time, instead of retrieving all the matches at once. So for example, if there are 10,000 items in the database, you can configure the ComboBox to load 100 items at a time, to make the on demand loading functionality run smoother.

To load the next set of items, the end user simply needs to click on the footer text from the bottom of the list with items.

Additionally you can enable the virtual scrolling feature, which will allow end users to load new sets of items simply by scrolling the list of items (or by using the mouse wheel). To enable the virtual scrolling feature, simply set the EnableVirtualScrolling property to true.
View - Aspx
    <% Html.Obout(new ComboBox("ComboBox1") 
        EnableLoadOnDemand = true,
        OnLoadingItems = "ComboBox/LoadingItemsWithPaging",
        EnableVirtualScrolling = true
    }); %>
View - Razor
    @Html.Obout(new ComboBox("ComboBox1") 
        EnableLoadOnDemand = true,
        OnLoadingItems = "ComboBox/LoadingItemsWithPaging",
        EnableVirtualScrolling = true
    public JsonResult LoadingItemsWithPaging(ComboBoxLoadingItemsEventArgs args)
        ComboBoxItemList items = GetFilteredCustomers(args.Text, args.ItemsOffset);
        int itemsCount = GetFilteredCustomersCount(args.Text);
        int itemsLoadedCount = args.ItemsOffset + items.Count();

        JsonResult result = new JsonResult
            Data = new
                Items = items,
                ItemsCount = itemsCount,
                ItemsLoadedCount = itemsLoadedCount
            JsonRequestBehavior = JsonRequestBehavior.AllowGet

        return result;
    } Home 
ASP.NET MVC ComboBox Home   
ASP.NET MVC ComboBox Home 
Examples - 53
Appearance - 1 
Live Styles 
Autocomplete & Filtering - 2 
Load on Demand - 7 
Load Items on Demand 
Load Items on Demand with Paging  
Virtual Scrolling  
Initial Text  
Initial Text on Client-Side  
Load Items on Button Click  
Load Items with MinChars  
Multi-Columns - 4 
Grid-like Multi-Columns  
Grid-like Multi-Columns & Tooltips  
Multiple Rows and Columns  
State Selector  
Items with Icons - 3 
Items with Icons  
Grid-like Multi-Columns with Icons  
Multiple Rows and Columns with Icons  
Templates - 3 
Item Templates  
Header Templates  
Populating with Data - 1 
Populate with Data  
Item Selection - 6 
Single Item Selection  
Multi Item Selection  
Get Selected Item  
Get Selected Items  
Set Selected Item  
Set Selected Items  
Mode - 2 
Master/Detail - 3 
Unlimited Detail Levels  
Cascading ComboBoxes  
Integration - 3 
Items with ASP.NET CheckBoxes  
Items with Obout CheckBoxes  
RadioButtons inside ComboBox  
Settings - 8 
Server-Side API - 2 
Server-Side Events  
Enable / Disable  
Client-Side API - 8 
Client-Side Events  
Add / Remove Items  
Add Multi-Column Items  
Enable / Disable  
Get Selected Item  
Reset Selection  
Select / Deselect All Items  
Move Items  
Documentation - 1