• Docs
  • API
  • Help
  • Blog
  • GitHub

›Basic Usage

Getting Started

  • About
  • Getting Started
  • Bootstrap 4
  • Migration

Basic Usage

  • Work on Row
  • Work on Column
  • Table Sort
  • Row Selection
  • Column Filter
  • Cell Edit
  • Pagination
  • Expandable Row

Remote Table

  • Work on Remote
  • Overlay

Table Toolkits

  • Getting Started
  • Table Search
  • Export to CSV
  • Column Toggle

Exposed API

  • Introduction

Pagination

react-bootstrap-table2 separate the pagination code base to react-bootstrap-table2-pagination, so there's a little bit different when you use pagination. In the following, we are going to show you how to enable and configure the a pagination table

Live Demo For Pagination
API & Props Definition


Install

$ npm install react-bootstrap-table2-paginator --save

Add CSS

// es5 
require('react-bootstrap-table2-paginator/dist/react-bootstrap-table2-paginator.min.css');

// es6
import 'react-bootstrap-table2-paginator/dist/react-bootstrap-table2-paginator.min.css';

How

Let's enable a pagination on your table:

import paginationFactory from 'react-bootstrap-table2-paginator';
// omit...

<BootstrapTable keyField='id' data={ products } columns={ columns } pagination={ paginationFactory() } />

Customization

Basic Customization

react-bootstrap-table2 give some simple ways to customize something like text, styling etc, following is all the props we support for basic customization:

  • paginationSize
  • sizePerPageList
  • withFirstAndLast
  • alwaysShowAllBtns
  • firstPageText
  • prePageText
  • nextPageText
  • lastPageText
  • firstPageTitle
  • prePageTitle
  • nextPageTitle
  • lastPageTitle
  • hideSizePerPage
  • hidePageListOnlyOnePage
  • showTotal
  • disablePageTitle

You can check this online demo for above props usage.

Advance Customization

Sometime, you may feel above props is not satisfied with your requirement, don't worry, we provide following renderer for each part of pagination:

  • pageListRenderer
  • pageButtonRenderer
  • sizePerPageRenderer
  • sizePerPageOptionRenderer
  • paginationTotalRenderer

Completely Customization

If you want to customize the pagination component completely, you may get interesting on following solution:

  • Standalone
  • Non-standalone

react-bootstrap-table2-paginator have a PaginationProvider which is a react context and you will be easier to customize the pagination components under the scope of PaginationProvider. Let's introduce it step by step:

1. Import PaginationProvider

import paginationFactory, { PaginationProvider } from 'react-bootstrap-table2-paginator';

2. Declare custom and totalSize in pagination option:

const paginationOption = {
  custom: true,
  totalSize: products.length
};

3. Render PaginationProvider

<PaginationProvider
  pagination={ paginationFactory(paginationOption) }
>
  {
    ({
      paginationProps,
      paginationTableProps
    }) => (
      .....
    ) 
  }
</PaginationProvider>

PaginationProvider actually is a wrapper for the consumer of react context so that you are able to get the props from context then render to your compoennt and BootstrapTable:

  • paginationProps: this include everything about pagination, you will use it when you render standalone component or your custom component.
  • paginationTableProps: you don't need to know about this, but you have to give it as props when render BootstrapTable.

So far, your customization pagination should look like it:

<PaginationProvider
  pagination={ paginationFactory(paginationOption) }
>
  {
    ({
      paginationProps,
      paginationTableProps
    }) => (
      <div>
        <BootstrapTable
          keyField="id"
          data={ products }
          columns={ columns }
          { ...paginationTableProps }
        />
      </div>
    )
  }
</PaginationProvider>

Now, you have two choices

  • Use Standalone Component
  • Customize everything by yourself

4.1 Use Standalone Component

react-bootstrap-table2-paginator provider three standalone components:

  • Size Per Page Dropdown Standalone
  • Pagination List Standalone
  • Pagination Total Standalone

When render each standalone, you just need to pass the paginationProps props to standalone component:

import paginationFactory, {
  PaginationProvider,
  PaginationListStandalone,
  PaginationTotalStandalone,
  SizePerPageDropdownStandalone
} from 'react-bootstrap-table2-paginator';

<PaginationProvider
  pagination={ paginationFactory(options) }
>
  {
    ({
      paginationProps,
      paginationTableProps
    }) => (
      <div>
        <SizePerPageDropdownStandalone
          { ...paginationProps }
        />
        <PaginationTotalStandalone
          { ...paginationProps }
        />
        <BootstrapTable
          keyField="id"
          data={ products }
          columns={ columns }
          { ...paginationTableProps }
        />
        <PaginationListStandalone
          { ...paginationProps }
        />
      </div>
    )
  }
</PaginationProvider>

That's it!! The benifit for using standalone is you can much easier to render the standalone component in any posistion. In the future, we will implement more featue like applying style, className etc on standalone components.

Customizable props on PaginationListStandalone

  • N/A

Customizable props on SizePerPageDropdownStandalone

  • open: true to make dropdown show.
  • hidden: true to hide the size per page dropdown.
  • btnContextual: Set the button contextual.
  • variation: Variation for dropdown, available value is dropdown and dropup.
  • className: Custom the class on size per page dropdown

Customizable props on SizePerPageDropdownStandalone

  • N/A

4.2 Customization Everything

If you choose to custom the pagination component by yourself, the paginationProps will be important for you. Becasue you have to know for example how to change page or what's the current page etc. Therefore, following is all the props in paginationProps object:

page,
sizePerPage,
pageStartIndex,
hidePageListOnlyOnePage,
hideSizePerPage,
alwaysShowAllBtns,
withFirstAndLast,
dataSize,
sizePerPageList,
paginationSize,
showTotal,
pageListRenderer,
pageButtonRenderer,
sizePerPageRenderer,
paginationTotalRenderer,
sizePerPageOptionRenderer,
firstPageText,
prePageText,
nextPageText,
lastPageText,
prePageTitle,
nextPageTitle,
firstPageTitle,
lastPageTitle,
disablePageTitle,
onPageChange,
onSizePerPageChange

In most of case, page, sizePerPage, onPageChange and onSizePerPageChange are most important properties for you:

  • page: Current page.
  • sizePerPage: Current size per page.
  • onPageChange: Call it when you nede to change page. This function accept one number argument which indicate the new page
  • onSizePerPageChange: Call it when you nede to change size per page. This function accept two number argument which indicate the new sizePerPage and new page

This is a online example for showing how to custom pagination completely.

← Cell EditExpandable Row →
Docs
Getting StartedAPI References
Community
Stack OverflowProject ChatTwitter
More
BlogGitHubStar
Copyright © 2020 react-bootstrap-table2.