Blazor寻呼机概述
的Blazor寻呼机组件将使您能够在Blazor应用程序中为数据添加分页。我们在Grid和ListView等组件中使用它,您也可以将它作为一个独立的组件用于您自己的模板和数据。
Pager为用户提供更改页面的UI。对于开发人员,它提供了页面索引,这样您就可以只呈现相关的数据部分和事件你可以用它来实现按需加载.
的Pager组件是为Blazor的Telerik UI,一个具有100个本地组件的专业级UI库,用于构建现代和功能丰富的应用程序。想要试用它,请注册一个30天的免费试用。
创建Blazor寻呼机
添加
TelerikPager
标记到Razor文件。设置
总计
属性设置为数据源中的项数。设置
页大小
参数确定所需的数据子集。它支持双向绑定。设置
页面
(单向或双向绑定)参数int
对象。页面索引是基于1的。
使用TelerikPager为自己的数据和内容分页。
< TelerikPager总= " @Games。Count" PageSize="@PageSize" @bind- page ="@ page "> @{//获取并渲染基于分页信息的相关数据部分var pageData = Games。Skip((Page - 1) * PageSize).Take(PageSize).ToList();@foreach (Game Game in pageData) {}} @code {public int PageSize {get;设置;} = 3;public int Page {get;设置;} = 1;public List(); for (int i = 1; i < 20; i++) { Games.Add(new Game() { GameId = i, GameName = $"Game {i}" }); } } public class Game { public int GameId { get; set; } public string GameName { get; set; } } }
事件
Blazor Pager公开PageChanged和PageSizeChanged事件,您可以处理这些事件并进一步定制其行为。阅读更多关于Blazor寻呼机事件的信息.
寻呼机参数
Blazor寻呼机提供了各种参数,允许您配置组件:
参数
类型及默认值
描述
自适应
保龄球
定义是否应根据屏幕大小更改分页器元素。启用时,寻呼机将隐藏其寻呼机信息
而且页大小,它
如果他们不能在可用的空间。在最小分辨率下,页面按钮将呈现为选择元素。
ButtonCount
int
可见的页面按钮的最大数量。要生效,ButtonCount
必须小于页数(ButtonCount < Total / PageSize
).
类
字符串
对象呈现自定义CSS类< div class = " k-pager-wrap”>
元素。
页面
int
表示页导航器的当前页。第一个页面的索引是1
.支持双向绑定。如果没有提供值,该参数将默认为第一个页面(1),但您应该始终使用该参数值,以便成功使用组件。如果不使用双向绑定,也不在用户操作之后更新参数的值,那么页导航UI将不会反映更改,而是恢复到以前的值(页面索引)。
页大小
int
要在页面上显示的项数。支持双向绑定。
页大小
列表< int ?>
允许用户通过下拉列表更改页面大小。属性配置DropDownList选项。一个零
的项目页大小
列表
将呈现一个"All"选项。默认情况下,不显示寻呼机下拉列表。您还可以设置页大小
来零
以编程方式随时删除下拉列表。
InputType
PagerInputType
枚举
(按钮
)
确定分页器是显示转到特定页面的数字按钮,还是显示输入页面索引的文本框。箭头按钮总是可见的。的PagerInputType
Enum接受值按钮
(默认)或输入
.当输入
时,当文本框被模糊化或用户按下Enter键时,页面索引将会改变。这是为了避免无意的数据请求。
总计
int
表示页导航器中项的总数。
例子
按需加载
一次加载所有数据可能是一项开销很大的操作。在这种情况下,使用PageChanged
事件获取要呈现的新数据子集。提供正确的信息是很重要的总计
将完整数据源中的项的计数传递给组件,以便它能够呈现正确数量的页面按钮。
按需加载分页数据
@{ @foreach(游戏游戏在PagedDataToRender) { @游戏。GameName
@game。GameId
已发布:@game.ReleaseDate.ToShortDateString()
} } @code {int TotalGames {get;设置;} int CurrPage {get;设置;} = 1;//页面索引是基于1的int PageSize {get;设置;} = 5;公共列表< int ?> GamesPerPage = new List { 5, 10, 20, null }; List PagedDataToRender { get; set; } protected override async Task OnInitializedAsync() { await LoadDataOnDemand(); } async Task PageChangedHandler(int page) { CurrPage = page; await LoadDataOnDemand(); } async Task LoadDataOnDemand() { TotalGames = await GetCountFromService(); PagedDataToRender = await GetPagedDataFromService(CurrPage - 1, PageSize); } // simulate a service below private List _allData { get; set; } = Enumerable.Range(1, 100).Select(x => new Game { GameName = $"Game {x}", GameId = x, ReleaseDate = DateTime.Now.AddDays(-x) }).ToList(); public async Task GetCountFromService() { return await Task.FromResult(_allData.Count); } public async Task> GetPagedDataFromService(int pageIndex, int pageSize) { var pagedData = _allData.Skip(pageIndex * pageSize).Take(pageSize); return await Task.FromResult(pagedData.ToList()); } // In real-case scenario this model should be in a separate file public class Game { public int GameId { get; set; } public string GameName { get; set; } public DateTime ReleaseDate { get; set; } } }
双向绑定
的页面
参数支持双向绑定,因此它可以响应来自其他元素的更改,也可以更新其他元素。这是该组件最直接的用法。作为一种替代方法,请使用PageChanged
事件,以便在对数据分页时实现附加逻辑,例如按需加载.
这个例子展示了当从外部输入选择页面时,Pager是如何反应的。*@ @code {public int PageSize {get;设置;} = 3;public int Page {get;设置;} = 1;}
下一个步骤
另请参阅