我正在使用react-bootstrap-table (var ReactBsTable = require("react-bootstrap-table"))。
我想在bootstraptable中添加一个只包含一个按钮的列。
有什么建议吗?谢谢。
<BootstrapTable data={this.state.activities} pagination={true} hover={true} search={true} selectRow={selectRowProp} options={options}>
<TableHeaderColumn isKey={true} dataField="id" hidden {true}>ID</TableHeaderColumn>
<TableHeaderColumn dataField="title" dataSort={true}>Title</TableHeaderColumn>
<TableHeaderColumn dataField="adress" dataSort{true}>Adress</TableHeaderColumn>
///I dont know if here or there is option to use
</BootstrapTable>我尝试添加一个按钮来显示与此按钮对应的id或行数据。我使用了jquery,但是我给了按钮一个id,但是所有这些按钮都有相同的id,所以只有第一个按钮有效,其余的没有。
<BootstrapTable data={this.state.activities} pagination={true} hover={true} search={true} selectRow={selectRowProp} options={options}>
<TableHeaderColumn isKey={true} dataField="id" hidden {true}>ID</TableHeaderColumn>
<TableHeaderColumn dataField="title" dataSort={true}>Title</TableHeaderColumn>
<TableHeaderColumn dataField="adress" dataSort{true}>Adress</TableHeaderColumn>
<TableHeaderColumn dataField="button" dataFormat={this.buttonFunction}></TableHeaderColumn>
</BootstrapTable>
buttonFunction: function (cell, row) {
var today = new Date().toISOString();
if (row.status === "En cours") {
if (row.dateEnd > today) {
return <Alert_Validate></Alert_Validate>;
} else {
return <label>
<button type="button" id="validatebutton" onClick={this._validateFunction} className="bbtn btn-primary btn-sm"><i className="fa fa-check fa-1x" aria-hidden="true"></i>
</button>
</label>
}
}
},
_validateFunction: function () {
var userid=this.props.params.id;
$("#validatebutton").click(function() {
var $row = $(this).closest("tr");
var activityid = $row.find("td:nth-child(2)");
console.log("activity id :"+activityid.text());
});发布于 2016-06-06 20:46:32
您可以创建一个新函数buttonFormatter来将按钮添加到列的每个单元格中
// products will be presented by react-bootstrap-table
var products = [{
id: 1,
name: "Item name 1",
price: 100
},{
id: 2,
name: "Item name 2",
price: 100
},........];
// It's a data format example.
function priceFormatter(cell, row){
return '<i class="glyphicon glyphicon-usd"></i> ' + cell;
},
function buttonFormatter(cell, row){
return '<BootstrapButton type="submit"></BootstrapButton>';
}
React.render(
<BootstrapTable data={products} striped={true} hover={true}>
<TableHeaderColumn dataField="id" isKey={true} dataAlign="center" dataSort={true}>Product ID</TableHeaderColumn>
<TableHeaderColumn dataField="name" dataSort={true}>Product Name</TableHeaderColumn>
<TableHeaderColumn dataField="price" dataFormat={priceFormatter}>Product Price</TableHeaderColumn>
<TableHeaderColumn dataField="button" dataFormat={buttonFormatter}>Buttons</TableHeaderColumn>
</BootstrapTable>,
document.getElementById("app")
);发布于 2016-12-01 23:58:12
我也遇到过类似的情况,我实现了这段代码,希望能对你有所帮助。
https://jsfiddle.net/69z2wepo/63821/
var dataFake = [
{
name: 'Product 1',
priceUnit: 23.50
},
{
name: 'Product 2',
priceUnit: 24.50
},
{
name: 'Product 3',
priceUnit: 33.20
}];
class Products extends React.Component {
onClickProductSelected(cell, row, rowIndex){
console.log('Product #', rowIndex);
}
cellButton(cell, row, enumObject, rowIndex) {
return (
<button
type="button"
onClick={() =>
this.onClickProductSelected(cell, row, rowIndex)}
>
Click me { rowIndex }
</button>
)
}
render() {
return (
<BootstrapTable data={this.props.data}>
<TableHeaderColumn dataField='name' isKey>
Name
</TableHeaderColumn>
<TableHeaderColumn dataField='priceUnit'>
Price
</TableHeaderColumn>
<TableHeaderColumn
dataField='button'
dataFormat={this.cellButton.bind(this)}
/>
</BootstrapTable>
)
}
}
ReactDOM.render(
<Products data={dataFake} />,
document.getElementById('container')
);https://stackoverflow.com/questions/37657482
复制相似问题