# Row selection `react-bootstrap-table2` supports the row selection feature. By passing prop `selectRow` to enable row selection. When you enable this feature, `react-bootstrap-table2` will append a new selection column at first. ## Available properties The following are available properties in `selectRow`: #### Required * [mode (**required**)](#mode) * [style](#style) * [classes)](#classes) * [bgColor](#bgColor) * [nonSelectable)](#nonSelectable) * [clickToSelect)](#clickToSelect) * [clickToEdit](#clickToEdit) * [onSelect](#onSelect) * [onSelectAll](#onSelectAll) * [hideSelectColumn](#hideSelectColumn) #### Optional ## selectRow.mode - [String] Specifying the selection way for `single(radio)` or `multiple(checkbox)`. If `radio` was assigned, there will be a radio button in the selection column; otherwise, the `checkbox` instead. #### values * `radio` * `checkbox` #### examples ```js const selectRow = { mode: 'radio' // single row selection }; ``` ```js const selectRow = { mode: 'checkbox' // multiple row selection }; ``` ## selectRow.style - [Object | Function] `selectRow.style` allow you to have custom style on selected rows: ```js const selectRow = { mode: 'checkbox', style: { background: 'red' } }; ``` If you wanna more flexible customization, `selectRow.style` also accept a function: ```js const selectRow = { mode: 'checkbox', style: (row, rowIndex) => { return ...; } }; ``` ## selectRow.classes - [String | Function] `selectRow.classes` allow you to add css class on selected rows: ```js const selectRow = { mode: 'checkbox', classes: 'custom-class' }; ``` If you wanna more flexible customization, `selectRow.classes` also accept a function: ```js const selectRow = { mode: 'checkbox', classes: (row, rowIndex) => { return ...; } }; ``` ## selectRow.bgColor - [String | Function] The backgroud color when row is selected ```js const selectRow = { mode: 'checkbox', bgColor: 'red' }; ``` There's also a more good way to custom it: ```js const selectRow = { mode: 'checkbox', bgColor: (row, rowIndex) => { return ....; // return a color code } }; ``` ## selectRow.nonSelectable - [Array] This prop allow you to restrict some rows which can not be selected by user. `selectRow.nonSelectable` accept an rowkeys array. ```js const selectRow = { mode: 'checkbox', nonSelectable: [1, 3 ,5] }; ``` ## selectRow.clickToSelect - [Bool] Able to select row when clicking on row. ```js const selectRow = { mode: 'checkbox', clickToSelect: true }; ``` > Note: if you also enable [cellEdit](./cell-edit.md), the `selectRow.clickToSelect` will deactivate the functionality of cell editing > If you want to click on row to select row and edit cell simultaneously, you are suppose to enable [`selectRow.clickToEdit`](#clickToEdit) ## selectRow.clickToEdit - [Bool] Able to click to edit cell and select row ```js const selectRow = { mode: 'checkbox', clickToSelect: true clickToEdit: true }; ``` ## selectRow.onSelect - [Function] This callback function will be called when a row is select/unselect and pass following three arguments: `row`, `isSelect` and `rowIndex`. ```js const selectRow = { mode: 'checkbox', onSelect: (row, isSelect, rowIndex) => { // ... } }; ``` ## selectRow.onSelectAll - [Function] This callback function will be called when select/unselect all and it only work when you configure [`selectRow.mode`](#mode) as `checkbox`. ```js const selectRow = { mode: 'checkbox', onSelectAll: (isSelect, results) => { // ... } }; ``` ## selectRow.hideSelectColumn - [Bool] Default is `false`, if you don't want to have a selection column, give this prop as `true` ```js const selectRow = { mode: 'radio', hideSelectColumn: true, clickToSelect: true, bgColor: 'red' }; ```