Skip to content

Instantly share code, notes, and snippets.

@AllenFang
Created February 12, 2017 10:14
Show Gist options
  • Select an option

  • Save AllenFang/c8c53c68fcaa89672add00a8b2876409 to your computer and use it in GitHub Desktop.

Select an option

Save AllenFang/c8c53c68fcaa89672add00a8b2876409 to your computer and use it in GitHub Desktop.
class ExternalMultiSort extends React.Component {
constructor(props) {
super(props);
this.state = {
sortName: [],
sortOrder: []
};
this.onSortChange = this.onSortChange.bind(this);
this.cleanSort = this.cleanSort.bind(this);
}
onSortChange(name, order) {
const sortName = [];
const sortOrder = [];
for (let i = 0; i < this.state.sortName.length; i++) {
if (this.state.sortName[i] !== name) {
sortName.push(this.state.sortName[i]);
sortOrder.push(this.state.sortOrder[i]);
}
}
sortName.push(name);
sortOrder.push(order);
this.setState({
sortName,
sortOrder
});
}
cleanSort() {
this.setState({
sortName: [],
sortOrder: []
});
}
render() {
const options = {
// reassign the multi sort list by an Array
// if you dont want to control al the sort list, you can only assign the String to sortName and sort Order
sortName: this.state.sortName,
sortOrder: this.state.sortOrder,
onSortChange: this.onSortChange
};
return (
<div>
<button className='btn ben-default' onClick={ this.cleanSort }>Clean</button>
<p style={ { color: 'red' } }>sort: sortName={ this.state.sortName }, sortOrder={ this.state.sortOrder }</p>
<BootstrapTable data={ products } options={ options } multiColumnSort={ 2 }>
<TableHeaderColumn dataField='id' isKey={ true } dataSort={ true }>Product ID</TableHeaderColumn>
<TableHeaderColumn dataField='name' dataSort={ true }>Product Name</TableHeaderColumn>
<TableHeaderColumn dataField='price'>Product Price</TableHeaderColumn>
</BootstrapTable>
</div>
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment