按需加载组数据
网格组件允许您为每个个体加载数据集团按需,而不是让它一直存在。
在本文中:
基础知识
若要为组启用按需加载,请设置LoadGroupsOnDemand = " true "
电网。在此模式下,当没有分组时,Grid将正常工作,您可以将此模式与行的虚拟滚动.
一旦应用了分组(由用户手动或通过Grid)状态),组将默认显示为折叠。当用户展开一个组时,将从数据源请求其中的所有行。如果你提供所有的数据
到网格中,组件将为您执行操作。服务器操作请参见下文。
为了分页,每个组页眉、每个组页脚和Grid页脚都将算作行。控件中,在展开组之前,其子项都不会被计算和显示总计
计数用于分页。
服务器操作
方法按需加载数据时OnRead事件,根据需要的数据,可以有三种不同类型的请求:
如果没有分组,则请求与往常一样—Grid没有添加额外的参数或设置。
如果存在分组,并且网格需要组列表,则
GroupPaging
its参数DataSourceRequest
将被设置为真正的
.如果当前展开的组行具有子组,则使用
GroupPaging
参数设置为真正的
,提示响应必须包括子组中的项目总数,并再次返回组的集合,而不是模型的集合。如果Grid从分组集开始,它将对所有组的列表发出一个请求,并将它们保存在内存中以便分页。
如果当前展开的组行没有子组,则
过滤器
参数。DataSourceRequest
将包含请求项的组值(以及任何子组的值)。的页大小
的值设置为0
这样Grid就可以获得该组的所有项目。的OnRead
事件将在每次展开一个组以获取该组的所有项时触发。
当分组处于活动状态时,不会触发分页和虚拟滚动操作OnRead
,因为Grid已经拥有当前展开的组的所有组头和所有项。
例子
本节举例如下:
- 定期分页和按需分组加载-一个基本的例子如何启用功能
- 虚拟滚动,按需组加载和服务器数据操作—模拟实际数据服务,实现用户扩容组时按需加载。在滚动过程中没有请求。的
页大小
确定呈现的行数,但不确定数据请求中预期的行数。该示例还展示了如何将初始Grid状态设置为包含分组。
定期分页和按需分组加载
这个示例展示了按需设置启用组加载的基础知识LoadGroupsOnDemand = " true "
.根据Team和/或Vacation列对网格进行分组,以查看效果。
将“Team”和/或“On Vacation”列的列头拖到顶部的组面板上 gridtotals > Employees in this group: @context.Count Lowest salary in this group: @context.Min Total salary expenses @context.Sum Employees with "OnLeave" @context.Value : @context.Count @code { public List GridData { get; set; } protected override void OnInitialized() { GridData = new List(); var rand = new Random(); for (int i = 0; i < 25; i++) { GridData.Add(new Employee() { EmployeeId = i, Name = "Employee " + i.ToString(), Team = "Team " + i % 3, IsOnLeave = i % 2 == 0, Salary = rand.Next(1000, 5000) }); } } public class Employee { public int EmployeeId { get; set; } public string Name { get; set; } public string Team { get; set; } public bool IsOnLeave { get; set; } public decimal Salary { get; set; } } }
虚拟滚动,按需分组加载和服务器端数据操作
这个示例展示了如何结合虚拟行滚动特性和通过远程服务(本例中由静态类模拟,以便轻松运行)按需加载组数据,以及如何将网格的初始状态设置为默认分组。
@using Telerik。数据Source @using Telerik.DataSource.Extensions Scroll through the groups or expand them to load their data on demand @code { List
限制
组的展开状态仅在分页期间保留,但在应用排序或筛选时不保留。
由于组页眉和页脚被视为网格中的行,因此当您对网格进行分页时,组页眉可能仍然位于数据的前一页。
如果按需分组负载与虚拟滚动:
虚拟滚动的所有要求和限制都适用。
聚合不支持。
仅导出当前Grid页面时(
AllPages = " false "
),导出的文件将不包含折叠组的子数据。