【发布时间】:2022-01-27 18:40:45
【问题描述】:
我有一个反应引导表,其中显示有关经理的销售信息,按经理分组,这样我就可以看到他们的整体表现。我想添加单击一行并扩展表格以包含销售代表级别的数据的功能。
数据:
const SALES = [
{
manager: 'Mgr 1', revenue: 49.98, repName: 'Rep 1', forecast: 81.00,
},
{
manager: 'Mgr 1', revenue: 10, repName: 'Rep 1', forecast: 91.00,
},
{
manager: 'Mgr 1', revenue: 9.99, repName: 'Rep 13', forecast: 82.00,
},
{
manager: 'Mgr 2', revenue: 99.99, repName: 'Rep 3', forecast: 101.00,
},
{
manager: 'Mgr 2', revenue: 9.99, repName: 'Rep 5', forecast: 89.00,
},
{
manager: 'Mgr 3', revenue: 199.99, repName: 'Rep 6', forecast: 77.00,
},
];
以下函数为我的初始表分组/聚合我的数据:
function groupByTotal(arr, groupByCols, aggregateCols, counter) {
const subSet = (o, keys) => keys.reduce((r, k) => (r[k] = o[k], r), {})
let grouped = {};
arr.forEach(o => {
const values = groupByCols.map(k => o[k]).join("|");
if (grouped[values]) {
aggregateCols.forEach(col => grouped[values][col] += o[col])
if (counter) { grouped[values].Count++ }
} else {
grouped[values] = subSet(o, groupByCols);
if (counter) { grouped[values].Count = 1 }
aggregateCols.forEach(col => grouped[values][col] = o[col])
}
})
return Object.values(grouped);
}
const groupedSales = groupByTotal(SALES, ['manager'], ['revenue','forecast']);
建表:
const columns = [{
dataField: 'manager',
text: 'Sale Owner',
}, {
dataField: 'revenue',
text: 'Revenue',
}, {
dataField: 'forecast',
text: 'Forecast',
}];
const expandRow = {
renderer: row => (
// Add rep level data to table below the appropriate manager
),
showExpandColumn: true
};
return (
<BootstrapTable
keyField='manager'
data={ groupedSales }
columns={ columns }
expandRow={ expandRow }
/>
)
理想的解决方案应该是这样的:
谁能帮我创建合适的 expandRow 或提出其他方法?谢谢。
【问题讨论】:
标签: javascript reactjs react-bootstrap react-bootstrap-table