[我希望表格中的此类列可编辑react-Bootstrap_ table2 中与整个编辑对应的行 与每个编辑按钮对应的 ]
我想做的事的示例图像!!
![1]:https://i.stack.imgur.com/RYTwN.png
import React from "react";
import "../../node_modules/bootstrap/dist/css/bootstrap.min.css";
import BootstrapTable from "react-bootstrap-table-next";
import paginationFactory from "react-bootstrap-table2-paginator";
import cellEditFactory from "react-bootstrap-table2-editor";
export class Table extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [
{
id: 1,
dn: "Gob",
f: "wah",
ct: "2",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 2,
dn: "Buster",
f: "wah",
ct: "5",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 1,
dn: "Gob",
f: "wah",
ct: "2",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 2,
dn: "Buster",
f: "wah",
ct: "5",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
},
{
id: 3,
dn: "George Michael",
f: "wah",
ct: "4",
cr: "acha",
dsf: 12,
dsp: 30
}
],
columns: [
{
dataField: "dn",
text: "Doctor Name",
sort: true
},
{
dataField: "f",
text: "Facility",
sort: true
},
{
dataField: "ct",
text: "Consultation Type",
sort: true
},
{
dataField: "cr",
text: "Consultation Rate",
sort: true
},
{
dataField: "dsf",
text: "Doctor Share (Fixed)",
sort: true,
style: { backgroundColor: "#e0f7fa" }
},
{
dataField: "dsp",
text: "Doctor Share(%)",
sort: true,
style: { backgroundColor: "#fbe9e7" }
},
{
dataField: "edit",
text: "Edit",
editCellStyle: (cell, row, rowIndex, colIndex) => {
const icon = { style: 'class="glyphicon glyphicon-pencil">' };
return { icon };
}
}
]
};
}
render() {
const selectRow = {
mode: "checkbox",
clickToSelect: true
};
// const editFormatter = (cell, row, rowIndex, formatExtraData) => {
// <Button
// icon
// labelPosition="left"
// onClick={() => deleteMe(rowIndex, rowId)}
// >
// <Icon name="remove" /> Remove{" "}
// </Button>;
// };
const customTotal = (from, to, size) => (
<span className="react-bootstrap-table-pagination-total">
Showing {from} to {to} of {size} Results
</span>
);
return (
<div className="container" style={{ marginTop: 50 }}>
<BootstrapTable
striped
hover
keyField="dn"
data={this.state.data}
columns={this.state.columns}
pagination={paginationFactory({ nextPageText: "Next" })}
selectRow={selectRow}
cellEdit={cellEditFactory({ mode: "click" })}
/>
</div>
);
}
}
如何在编辑列中添加按钮? 这样我就可以编辑一行 我知道必须有一些机制可以自定义列并添加 图片中提到的图标。
答案 0 :(得分:0)
您可以在列定义中添加一个虚拟字段,并引用可以为每一行在列中呈现组件的格式化程序。在我们的例子中,该组件是一个ActionsFormater,我们用它来呈现几个按钮(视图,编辑,删除),这些按钮可以作用于为每一行传入的id。
{
dataField: 'actions',
text: 'Actions',
isDummyField: true,
csvExport: false,
formatter: this.actionsFormatter,
},
actionsFormatter = (cell, row) => <ActionsFormatter id={row.id} />;
看起来像这样:
答案 1 :(得分:0)
我做了这个功能,并返回了EditIcon按钮组件。
function rankFormatter(cell, row, rowIndex, formatExtraData) {
return (
< div
style={{ textAlign: "center",
cursor: "pointer",
lineHeight: "normal" }}>
< EditIcon
style={{ fontSize: 20 }}
color="disabled"
/>
</div>
); }
这是我已将rankFormatter函数分配给格式化程序的列。
{ dataField: "edit",
text: "Edit",
sort: false,
formatter: rankFormatter,
headerAttrs: { width: 50 },
attrs: { width: 50, class: "EditRow" }
}
这完全符合我的期望。.
答案 2 :(得分:0)
其他用户的解决方案也有效,但是我刚刚注意到,当前版本的reactstrap-table-next对此具有内置支持,因此我将为未来的用户提供答案。
可以通过将属性expandRow.showExpandColumn
设置为true来显示额外的列。
然后,仅在单击此列时才能展开行,属性expandRow.expandByColumnOnly
也必须设置为true。
可以通过属性expandRow.expandByColumnOnly
设置此列的显示面,该属性的值可以为left
或right
最后,我们还必须通过属性'expandRow.expandColumnRenderer'传递此列的渲染器,该属性采用类似({ expanded, rowKey, expandable }) => ()
expandRow示例:
const expandRow = {
renderer: row => ...,
expandByColumnOnly: true,
expandColumnPosition: 'right',
showExpandColumn: true,
expandColumnRenderer: ({expanded, rowKey, expandable}) => {
const onclick = (event) => {
console.log("clicked on row ", rowKey)
}
if (!expandable) {
return;
}
return (
<button type="button" onClick={onclick} className="btn btn-outline-primary"/>
);
}
};
...
<BootstrapTable ... expandRow={expandRow} />