BzPagination
صفحه بندی
پیمایش بین صفحه ها، با کنترل تعداد دکمه های اطراف.
دکمهفرم و اینپوتگروه اینپوتگروه دکمهانتخاب تاریختکمیل خودکارکارتنمایشلودینگدیالوگاعلانپیام عملیاتمنو کشوییکانتکس منوصفحه بندیلایت باکسدرختدیتاگریدنمودارتب و آکاردیوننویگیشن بارسایدبارتایم لاینویزارداسلایدرآپلودرادیتور متنتقویمابزار ایرانی
کامپوننتی پیدا نشد.
صفحه بندی ساده
فقط bind-Page و TotalPages لازم است.
صفحه: 1 / 12
@using BzCore.Components.Overlay
<BzPagination @bind-Page="_page" TotalPages="12" />
<p>صفحه: @_page / 12</p>
@code {
private int _page = 1;
}پارامتر Sibling
Sibling تعیین میکنه هر طرف صفحه ی فعلی چند دکمه دیده شود. عدد بزرگ تر یعنی دکمه های بیشتر و نقطه چین کمتر.
Sibling = 1
Sibling = 2
هر دو به یک متغیر وصل اند — صفحه: 5
| پارامتر | پیش فرض | توضیح |
|---|---|---|
Page | 1 | صفحه ی فعلی (با bind-Page) |
TotalPages | 1 | تعداد کل صفحه ها |
Sibling | 1 | تعداد دکمه ی هر طرف صفحه ی فعلی |
PageChanged | — | رویداد تغییر صفحه |
@using BzCore.Components.Overlay
@* Sibling = how many buttons show on each side of the current page *@
<BzPagination @bind-Page="_page" TotalPages="20" Sibling="1" />
<BzPagination @bind-Page="_page" TotalPages="20" Sibling="2" />
@code {
private int _page = 5;
}صفحه بندی روی دیتا واقعی
الگوی همیشگی: Skip/Take روی منبع داده با استفاده از صفحه ی فعلی.
Row #1
Row #2
Row #3
Row #4
@using BzCore.Components.Overlay
@foreach (var item in PagedItems)
{
<div>@item</div>
}
<BzPagination @bind-Page="_page" TotalPages="@TotalPages" />
@code {
private int _page = 1;
private const int PageSize = 4;
private readonly List<string> _all =
Enumerable.Range(1, 23).Select(i => $"Row #{i}").ToList();
private int TotalPages => (int)Math.Ceiling(_all.Count / (double)PageSize);
private IEnumerable<string> PagedItems =>
_all.Skip((_page - 1) * PageSize).Take(PageSize);
}
@*
For EF Core, page on the server instead:
var total = await db.Orders.CountAsync();
var rows = await db.Orders
.OrderBy(o => o.Id)
.Skip((_page - 1) * PageSize)
.Take(PageSize)
.ToListAsync();
*@