Articles about European Sharepoint Hosting Service
SharePoint Hosting – Implementing Paging With PnP Pagination Control
Paging is a nice way to get faster access to data as well as give a nice user experience to browse through huge data. While working with SharePoint lists and libraries having a huge number of items or documents paging makes the navigation through data easy.
In this article, we will explore using the PnP Control for paging (Pagination Control) to navigate from a large list.
Develop SPFx Solution
We will develop the SPFx web part as shown below:
In the solution, create a model at src\webparts\pnPPagination\models\ISPItem.ts to represent a SharePoint list item.
1 2 3 4 |
<span class="token keyword module keyword-export">export</span> <span class="token keyword keyword-interface">interface</span> <span class="token class-name">ISPItem</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> string<span class="token punctuation">;</span> description<span class="token operator">:</span> string<span class="token punctuation">;</span> <span class="token punctuation">}</span> |
In the web part, implement a method to read SharePoint list items. For simplicity, I am using a mock method to return dummy list items. I used the website Generate Random CSV to generate some random text for our list data.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<span class="token keyword keyword-public">public</span> <span class="token function">getSPListItems</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token maybe-class-name">ISPItem</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token punctuation">{</span> <span class="token keyword keyword-const">const</span> spItems<span class="token operator">:</span> <span class="token maybe-class-name">ISPItem</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"stove"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"completely"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"rich"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"know"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"composed"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"explain"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"said"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"simply"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"sum"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"bear"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"bowl"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"exclaimed"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"help"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"drive"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"pie"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"wore"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"grade"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"saw"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"butter"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"personal"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"family"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"being"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"occur"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"gather"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"push"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"industry"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"earth"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"wooden"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"went"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"able"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"milk"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"divide"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"art"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"truck"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"arrive"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"step"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"taught"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"throat"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"connected"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"went"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"charge"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"meet"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"having"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"attached"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"expression"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"sit"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"dear"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"cattle"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"closely"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"immediately"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"those"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"skin"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"shore"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"lake"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"meant"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"answer"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"down"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"correctly"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"pair"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"equipment"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"deal"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"blanket"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"garage"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"hay"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"cattle"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"view"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"heavy"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"moving"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"throat"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"locate"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"motor"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"serve"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"gun"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"alone"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"situation"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"far"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"worse"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"general"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"until"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"globe"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"tent"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"pile"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"dot"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"naturally"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"theory"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"score"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"dinner"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"underline"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"solid"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"gain"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"allow"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"region"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"joined"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"vowel"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"form"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"as"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"any"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"swung"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"excited"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"shine"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"enter"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"dirty"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"pile"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"supply"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> title<span class="token operator">:</span> <span class="token string">"piano"</span><span class="token punctuation">,</span> description<span class="token operator">:</span> <span class="token string">"help"</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword control-flow keyword-return">return</span> spItems<span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Define a State
Let us define a state to store all items.
1 2 3 4 5 6 |
<span class="token keyword module keyword-import">import</span> <span class="token imports"><span class="token punctuation">{</span> <span class="token maybe-class-name">ISPItem</span> <span class="token punctuation">}</span></span> <span class="token keyword module keyword-from">from</span> <span class="token string">'../models/ISPItem'</span><span class="token punctuation">;</span> <span class="token keyword module keyword-export">export</span> <span class="token keyword keyword-interface">interface</span> <span class="token class-name">IPnPPaginationState</span> <span class="token punctuation">{</span> allItems<span class="token operator">:</span> <span class="token maybe-class-name">ISPItem</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> paginatedItems<span class="token operator">:</span> <span class="token maybe-class-name">ISPItem</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span class="token keyword keyword-public">public</span> <span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token maybe-class-name">React</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">ReactElement</span></span><span class="token operator"><</span><span class="token maybe-class-name">IPnPPaginationProps</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token punctuation">(</span> <span class="token operator"><</span>div className<span class="token operator">=</span><span class="token punctuation">{</span>styles<span class="token punctuation">.</span><span class="token property-access">pnPPagination</span><span class="token punctuation">}</span><span class="token operator">></span> <span class="token operator"><</span>div className<span class="token operator">=</span><span class="token punctuation">{</span>styles<span class="token punctuation">.</span><span class="token property-access">container</span><span class="token punctuation">}</span><span class="token operator">></span> <span class="token operator"><</span>div className<span class="token operator">=</span><span class="token punctuation">{</span>styles<span class="token punctuation">.</span><span class="token property-access">row</span><span class="token punctuation">}</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token property-access">state</span><span class="token punctuation">.</span><span class="token property-access">allItems</span><span class="token punctuation">.</span><span class="token method function property-access">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">item</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token operator"><</span>div<span class="token operator">></span><span class="token punctuation">{</span>item<span class="token punctuation">.</span><span class="token property-access">title</span><span class="token punctuation">}</span><span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
The result will be displayed as follows:
Paging with PnP Pagination Control
Install @pnp/spfx-controls-react
Now let us implement the paging with PnP pagination control. Run the below command to install PnP Controls in the solution:
1 |
npm install @pnp/spfx-controls-react --save --save-exact |
Update state
Update the state to include paginated items.
1 2 3 4 5 6 |
<span class="token keyword module keyword-import">import</span> <span class="token imports"><span class="token punctuation">{</span> <span class="token maybe-class-name">ISPItem</span> <span class="token punctuation">}</span></span> <span class="token keyword module keyword-from">from</span> <span class="token string">'../models/ISPItem'</span><span class="token punctuation">;</span> exportinterfaceIPnPPaginationState <span class="token punctuation">{</span> allItems<span class="token operator">:</span> <span class="token maybe-class-name">ISPItem</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> paginatedItems<span class="token operator">:</span> <span class="token maybe-class-name">ISPItem</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Use PnP pagination control
Import the pagination control to React component as follows:
1 |
<span class="token keyword module keyword-import">import</span> <span class="token imports"><span class="token punctuation">{</span> <span class="token maybe-class-name">Pagination</span> <span class="token punctuation">}</span></span> <span class="token keyword module keyword-from">from</span> <span class="token string">'@pnp/spfx-controls-react/lib/pagination'</span><span class="token punctuation">;</span> |
Add the pagination control in the render method as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<span class="token keyword keyword-public">public</span> <span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token maybe-class-name">React</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">ReactElement</span></span><span class="token operator"><</span><span class="token maybe-class-name">IPnPPaginationProps</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token keyword control-flow keyword-return">return</span> <span class="token punctuation">(</span> <span class="token operator"><</span>div className<span class="token operator">=</span><span class="token punctuation">{</span>styles<span class="token punctuation">.</span><span class="token property-access">pnPPagination</span><span class="token punctuation">}</span><span class="token operator">></span> <span class="token operator"><</span>div className<span class="token operator">=</span><span class="token punctuation">{</span>styles<span class="token punctuation">.</span><span class="token property-access">container</span><span class="token punctuation">}</span><span class="token operator">></span> <span class="token operator"><</span>div className<span class="token operator">=</span><span class="token punctuation">{</span>styles<span class="token punctuation">.</span><span class="token property-access">row</span><span class="token punctuation">}</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token property-access">state</span><span class="token punctuation">.</span><span class="token property-access">paginatedItems</span><span class="token punctuation">.</span><span class="token method function property-access">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">item</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token operator"><</span>div<span class="token operator">></span><span class="token punctuation">{</span>item<span class="token punctuation">.</span><span class="token property-access">title</span><span class="token punctuation">}</span><span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token operator"><</span><span class="token maybe-class-name">Pagination</span> currentPage<span class="token operator">=</span><span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">}</span> totalPages<span class="token operator">=</span><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token property-access">state</span><span class="token punctuation">.</span><span class="token property-access">allItems</span><span class="token punctuation">.</span><span class="token property-access">length</span> <span class="token operator">/</span> pageSize<span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">}</span> onChange<span class="token operator">=</span><span class="token punctuation">{</span><span class="token punctuation">(</span><span class="token parameter">page</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token method function property-access">_getPage</span><span class="token punctuation">(</span>page<span class="token punctuation">)</span><span class="token punctuation">}</span> limiter<span class="token operator">=</span><span class="token punctuation">{</span><span class="token number">3</span><span class="token punctuation">}</span> <span class="token operator">/</span><span class="token operator">></span> <span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token operator"><</span><span class="token operator">/</span>div<span class="token operator">></span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
The selected page in the Pagination control can be retrieved with below method:
1 2 3 4 5 6 7 8 |
<span class="token keyword keyword-private">private</span> <span class="token function">_getPage</span><span class="token punctuation">(</span><span class="token parameter">page<span class="token operator">:</span> number</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// round a number up to the next largest integer.</span> <span class="token keyword keyword-const">const</span> roundupPage <span class="token operator">=</span> <span class="token known-class-name class-name">Math</span><span class="token punctuation">.</span><span class="token method function property-access">ceil</span><span class="token punctuation">(</span>page<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token method function property-access">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span> paginatedItems<span class="token operator">:</span> <span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token property-access">state</span><span class="token punctuation">.</span><span class="token property-access">allItems</span><span class="token punctuation">.</span><span class="token method function property-access">slice</span><span class="token punctuation">(</span>roundupPage <span class="token operator">*</span> pageSize<span class="token punctuation">,</span> <span class="token punctuation">(</span>roundupPage <span class="token operator">*</span> pageSize<span class="token punctuation">)</span> <span class="token operator">+</span> pageSize<span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Update the componentDidMount method to show first set of paginated items with pageSize as 5.
1 2 3 4 |
<span class="token keyword keyword-public">public</span> <span class="token function">componentDidMount</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword keyword-void">void</span> <span class="token punctuation">{</span> <span class="token keyword keyword-const">const</span> items<span class="token operator">:</span> <span class="token maybe-class-name">ISPItem</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token method function property-access">getSPListItems</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword keyword-this">this</span><span class="token punctuation">.</span><span class="token method function property-access">setState</span><span class="token punctuation">(</span><span class="token punctuation">{</span> allItems<span class="token operator">:</span> items<span class="token punctuation">,</span> paginatedItems<span class="token operator">:</span> items<span class="token punctuation">.</span><span class="token method function property-access">slice</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> pageSize<span class="token punctuation">)</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> |
The End Result
When deployed, the web part works as below:
Paging is a nicer way to present large data. PnP Control for paging (Pagination Control) is a flexible control to implement paging in an easy way.
Print article | This entry was posted by Peter on March 17, 2022 at 2:22 am, and is filed under European SharePoint 2013 Hosting. Follow any responses to this post through RSS 2.0. Both comments and pings are currently closed. |