Skip to content

Commit b442d95

Browse files
author
Tony Baeg
committed
onRowClick feature
1 parent 41c229c commit b442d95

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

src/BootstrapTable.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ class BootstrapTable extends React.Component {
167167
sortName={this.props.options.sortName}
168168
sortOrder={this.props.options.sortOrder}
169169
onSort={this.handleSort.bind(this)}
170+
onRowClick={this.handleRowClick.bind(this)}
170171
onSelectAllRow={this.handleSelectAllRow.bind(this)}
171172
bordered={this.props.bordered}>
172173
{this.props.children}
@@ -184,7 +185,9 @@ class BootstrapTable extends React.Component {
184185
selectRow={this.props.selectRow}
185186
cellEdit={this.props.cellEdit}
186187
selectedRowKeys={this.state.selectedRowKeys}
187-
onSelectRow={this.handleSelectRow.bind(this)}/>
188+
onRowClick={this.handleRowClick.bind(this)}
189+
onSelectRow={this.handleSelectRow.bind(this)}
190+
/>
188191
{tableFilter}
189192
{pagination}
190193
</div>
@@ -223,6 +226,12 @@ class BootstrapTable extends React.Component {
223226
});
224227
}
225228

229+
handleRowClick(row) {
230+
if (this.props.selectRow.onRowClick) {
231+
this.props.selectRow.onRowClick(row);
232+
}
233+
}
234+
226235
handleSelectAllRow(e) {
227236
var isSelected = e.currentTarget.checked;
228237
let selectedRowKeys = [];
@@ -503,6 +512,7 @@ BootstrapTable.propTypes = {
503512
mode: React.PropTypes.string,
504513
bgColor: React.PropTypes.string,
505514
selected: React.PropTypes.array,
515+
onRowClick: React.PropTypes.func,
506516
onSelect: React.PropTypes.func,
507517
onSelectAll: React.PropTypes.func,
508518
clickToSelect: React.PropTypes.bool,
@@ -548,6 +558,7 @@ BootstrapTable.defaultProps = {
548558
mode: Const.ROW_SELECT_NONE,
549559
bgColor: Const.ROW_SELECT_BG_COLOR,
550560
selected: [],
561+
onRowClick: undefined,
551562
onSelect: undefined,
552563
onSelectAll: undefined,
553564
clickToSelect: false,

src/TableBody.js

+13
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class TableBody extends React.Component{
104104
<TableRow isSelected={selected} key={r} className={trClassName}
105105
selectRow={isSelectRowDefined?this.props.selectRow:undefined}
106106
enableCellEdit={this.props.cellEdit.mode !== Const.CELL_EDIT_NONE}
107+
onRowClick={this.handleRowClick.bind(this)}
107108
onSelectRow={this.handleSelectRow.bind(this)}>
108109
{selectRowColumn}
109110
{tableColumns}
@@ -158,6 +159,17 @@ class TableBody extends React.Component{
158159
)
159160
}
160161

162+
handleRowClick(rowIndex){
163+
var key, selectedRow;
164+
this.props.data.forEach(function(row, i){
165+
if(i == rowIndex-1){
166+
key = row[this.props.keyField];
167+
selectedRow = row;
168+
}
169+
}, this);
170+
this.props.onRowClick(selectedRow);
171+
}
172+
161173
handleSelectRow(rowIndex, isSelected){
162174
var key, selectedRow;
163175
this.props.data.forEach(function(row, i){
@@ -234,6 +246,7 @@ TableBody.propTypes = {
234246
condensed: React.PropTypes.bool,
235247
keyField: React.PropTypes.string,
236248
selectedRowKeys: React.PropTypes.array,
249+
onRowClick: React.PropTypes.func,
237250
onSelectRow: React.PropTypes.func
238251
};
239252
export default TableBody;

src/TableRow.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ class TableRow extends React.Component{
55

66
rowClick(e){
77
if(e.target.tagName !== "INPUT")
8-
this.props.onSelectRow(e.currentTarget.rowIndex, !this.props.isSelected);
8+
if (this.props.selectRow.clickToSelect) this.props.onSelectRow(e.currentTarget.rowIndex, !this.props.isSelected);
9+
if (this.props.selectRow.onRowClick) this.props.onRowClick(e.currentTarget.rowIndex);
910
}
1011

1112
render(){
@@ -18,7 +19,7 @@ class TableRow extends React.Component{
1819
};
1920

2021
if(this.props.selectRow && !this.props.enableCellEdit &&
21-
(this.props.selectRow.clickToSelect || this.props.selectRow.clickToSelectAndEditCell)){
22+
(this.props.selectRow.clickToSelect || this.props.selectRow.clickToSelectAndEditCell) || this.props.selectRow.onRowClick){
2223
return(
2324
<tr {...trCss} onClick={this.rowClick.bind(this)}>{this.props.children}</tr>
2425
)
@@ -32,6 +33,7 @@ class TableRow extends React.Component{
3233
TableRow.propTypes = {
3334
isSelected: React.PropTypes.bool,
3435
enableCellEdit: React.PropTypes.bool,
36+
onRowClick: React.PropTypes.func,
3537
onSelectRow: React.PropTypes.func
3638
};
3739
export default TableRow;

0 commit comments

Comments
 (0)