Blazor寻呼机概述
的Blazor寻呼机组件将允许您在Blazor应用程序中为数据添加分页。我们在Grid和ListView等组件中使用它,您也可以将它作为独立组件用于您自己的模板和数据。
寻呼机为用户提供了更改页面的UI。对于开发人员,它提供了页面索引,以便您只能呈现相关的数据部分和事件你可以用它来实现按需负荷.
寻呼机组件是Blazor的Telerik UI,一个专业级的UI库,包含100个本地组件,用于构建现代和功能丰富的应用程序。想要试用它,可以注册一个30天的免费试用期。
创建Blazor寻呼机
添加
TelerikPager
标记到Razor文件。设置
总计
属性设置为数据源中的项数。设置
页大小
参数确定所需的数据子集。它支持双向绑定。设置
页面
(单向或双向绑定)参数int
对象。页面索引是基于1的。
< TelerikPager总= " @Games。计数" PageSize="@PageSize" @bind- page ="@ page "> @{//获取并渲染基于pager信息var pageData = Games的相关数据部分。Skip((Page - 1) * PageSize).Take(PageSize).ToList();@foreach (Game Game in pageData) {}} @code {public int PageSize {get;设置;} = 3;公共int页面{获取;设置;} = 1;public List Games {get;设置; } protected override void OnInitialized() { Games = new 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寻呼机公开PageChanged和PageSizeChanged事件,您可以处理这些事件并进一步自定义其行为。阅读更多关于Blazor寻呼机事件.
寻呼机参数
Blazor寻呼机提供了各种参数,允许您配置组件:
参数
类型及默认值
描述
自适应
保龄球
定义是否应根据屏幕大小更改页导航元素。启用时,寻呼机将隐藏其寻呼机信息
而且页大小,它
如果他们装不下可用的空间。在最小分辨率下,页面按钮将呈现为选择元素。
ButtonCount
int
将可见的页面按钮的最大数量。为了生效,ButtonCount
必须小于页数(ButtonCount < Total / PageSize
).
类
字符串
对象呈现自定义CSS类< div class = " k-pager-wrap”>
元素。
页面
int
表示寻页器的当前页。第一页的索引为1
.支持双向绑定。如果没有提供任何值,该参数将默认为第一页(1),但是为了成功使用组件,您应该始终使用该参数值。如果不使用双向绑定,并且在用户操作之后不更新参数的值,那么分页器UI将不会反映更改,并将恢复到以前的值(页面索引)。
页大小
int
在页面上显示的项数。支持双向绑定。
页大小
列表< int ?>
允许用户通过下拉列表更改页面大小。属性配置下拉列表选项。一个零
项目页大小
列表
将显示“All”选项。缺省情况下,不显示寻呼机下拉列表。你也可以设置页大小
来零
以编程方式删除下拉列表在任何时候。
InputType
PagerInputType
枚举
(按钮
)
确定寻呼机是显示转到特定页面的数字按钮,还是显示输入页面索引的文本框。箭头按钮总是可见的。的PagerInputType
Enum接受值按钮
(默认)或输入
.当输入
,则当文本框模糊或用户按回车键时,页面索引将会改变。这是为了避免无意的数据请求。
总计
int
表示寻页器中项的总数。
例子
按需负载
一次性加载所有数据可能是一项代价高昂的操作。在这种情况下,使用PageChanged
事件,以获取要呈现的新数据子集。重要的是始终提供正确的总计
将整个数据源中的项数统计给组件,以便它能够呈现正确数量的页面按钮。
@{ @foreach (Game Game Game in PagedDataToRender) { @游戏。GameName
@游戏。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
事件来实现对数据分页时的附加逻辑,例如按需加载.
这个例子展示了当从外部输入选择页面时,寻呼机是如何反应的。*@ @code {public int PageSize {get;设置;} = 3;公共int页面{获取;设置;} = 1;}
下一个步骤
另请参阅