diff --git a/MP.Stats/Components/DataPager.razor b/MP.Stats/Components/DataPager.razor index fe4f3439..5616729f 100644 --- a/MP.Stats/Components/DataPager.razor +++ b/MP.Stats/Components/DataPager.razor @@ -1,8 +1,29 @@ 
-
- paginazione +
+ + + + + + + @for (int i = 1; i <= LastPage; ++i) + { + var pageNum = i; + + + @pageNum + + + } + + + + + + +
@totalCount records @@ -12,7 +33,7 @@
row/pag:  - @@ -24,13 +45,29 @@
@code { + + void HandlePaginationItemClick(string page) + { + currPage = int.Parse(page); + reportChangePage(); + } + + private int LastPage + { + get + { + return Math.Max((int)Math.Ceiling(totalCount / (double)PageSize), 1); + } + } + [Parameter] public int totalCount { get; set; } = 0; protected int _numRecord { get; set; } = 10; + protected int _numPage { get; set; } = 1; [Parameter] - public int numRecord + public int PageSize { get { @@ -39,20 +76,44 @@ set { bool doReport = !_numRecord.Equals(value); - _numRecord = value; if (doReport) { + _numRecord = value; reportChange(); } } } + [Parameter] + public int currPage + { + get + { + return _numPage; + } + set + { + bool doReport = !_numPage.Equals(value); + if (doReport) + { + _numPage = value; + reportChangePage(); + } + } + } + [Parameter] public EventCallback numRecordChanged { get; set; } + [Parameter] + public EventCallback numPageChanged { get; set; } private void reportChange() { - numRecordChanged.InvokeAsync(numRecord); + numRecordChanged.InvokeAsync(PageSize); + } + private void reportChangePage() + { + numPageChanged.InvokeAsync(currPage); } } \ No newline at end of file