[]
The ODataCollectionView supports group lazy loading to improve performance when working with large datasets. With group lazy loading enabled, the collection initially loads only top-level groups and retrieves child records when a group is expanded.
This approach helps:
Reduce the initial data load
Improve rendering performance
Optimize data retrieval for large grouped datasets
To enable group lazy loading:
Set the groupOnServer property to true
Set the groupLazyLoading property to true
Define one or more GroupDescription objects
This example demonstrates how to enable groupLazyLoading.
@(Html.C1().FlexGrid()
.Id("ODataGroupLazyLoading")
.CssStyle("height", "400px")
.IsReadOnly(true)
.BindODataSource(odsb =>
odsb.ServiceUrl("https://demodata.mescius.io/adventureworks/odata/v1/")
.TableName("SalesOrderHeaders")
.GroupOnServer(true)
.GroupLazyLoading(true)
.GroupDescriptions(new C1.Web.Mvc.GroupDescription[]
{
new C1.Web.Mvc.PropertyGroupDescription()
{
PropertyName = "AccountNumber"
}
})
.SortOnServer(Convert.ToBoolean(optionsModel.Options["Sort On Server"].CurrentValue))
.FilterOnServer(Convert.ToBoolean(optionsModel.Options["Filter On Server"].CurrentValue))
)
.Columns(bl =>
{
bl.Add(cb => cb.Binding("AccountNumber").Header("Account Number").Visible(false));
bl.Add(cb => cb.Binding("PurchaseOrderNumber").Header("Purchase Order Number"));
bl.Add(cb => cb.Binding("SalesOrderNumber").Header("Sales Order Number"));
bl.Add(cb => cb.Binding("SubTotal").Header("Sub Total"));
bl.Add(cb => cb.Binding("TaxAmt").Header("Tax Amount"));
bl.Add(cb => cb.Binding("Freight").Header("Freight"));
bl.Add(cb => cb.Binding("TotalDue").Header("Total Due"));
bl.Add(cb => cb.Binding("ModifiedDate").Header("Modified Date"));
})
.Filterable(fb => fb.DefaultFilterType(FilterType.Both))
.OnClientLoadedRows("oDataGroupLazyLoadingLoaded")
)