react-bootstrap-table2 如何处理扩展行中的大显示

react-bootstrap-table2 how to handle large display in expanded row

我有一个 table,其中包含一些用于显示产品及其价格的列。在我的主 table 上,一行由产品名称以及其他公司商店的最低和最高价格组成。 当我单击某行时,我将其展开以显示有关该产品的一些详细信息。在我的例子中,另一个 table 包含公司每个商店的一列和该特定商店的价格。

当我有一个很大的商店列表(例如 50 个)时,该行可以展开并正确显示结果,但是它的大小超过了屏幕宽度并且初始 table 大小也会增加。结果我的 min/max 在屏幕右侧丢失了,我只能滚动整个页面才能看到数据。

有没有办法控制溢出并为第二个table(展开中的那个)设置一个水平滚动条,这样它就不会脱离容器?

我看到了这个 post 但无法让它工作:https://github.com/react-bootstrap-table/react-bootstrap-table2/issues/291

这是扩展前后的行。

扩展行代码:

    const expandRow = {
          renderer: row => {
            var columns = vm.generateColumns();
            var product_list = vm.state.products_by_ean[row.ean_code];
            var content = {};

            product_list.forEach(product => {
              vm.props.selected_locations.forEach(shop_id => {
                if (product["shop"] == shop_id) {
                  content["shop_" + shop_id] =
                    product.price_without_taxes_normalized;
                } else {
                  if (!content.hasOwnProperty(shop_id)) {
                    content[shop_id] = {};
                  }
                }
              });
            });

            if (columns.length > 0) {
              return (
                <ToolkitProvider columns={columns} data={[content]} keyField="id">
                  {props => (
                    <div>
                      <BootstrapTable
                        {...props.baseProps}
                        noDataIndication={() => <NoDataIndication />}
                      />
                    </div>
                  )}
                </ToolkitProvider>
              );
            } else {
              return "";
            }
          },
          expanded: []
        };

  generateColumns() {
    let columns = [];
    let shop_list = this.getShopList();

    if (shop_list.length > 0) {
      shop_list.forEach(shop => {
        let col = {
          dataField: "shop_" + shop.id,
          formatter: priceFormatter,
          style: {
            whiteSpace: "normal"
          },
          text: shop.actor.label + " - " + shop.name
        };
        columns.push(col);
      });
    }

    return columns;
  }

给扩展行全部数据所在的容器一个class

示例:-

const expandRow = {
    renderer: row => {
        var columns = vm.generateColumns();
        var product_list = vm.state.products_by_ean[row.ean_code];
        var content = {};
        .........
        <div className="expanded-container">
            <BootstrapTable
                {...props.baseProps}
                noDataIndication={() => <NoDataIndication />}
            />
        </div>

CSS:-
.expanded-container{
    max-height: 10rem;
    overflow: scroll;
}

谢谢你的帮助,我以为会有一个容器包装器,但我找不到任何相关信息。

使用自定义包装器效果很好:

.expanded-container{
    width: 97vw;
    overflow-x: scroll;
    white-space: nowrap;
}