记录ProTable使用expandedRowRender实现嵌套子表格单选

用onchange会出现以下图片问题,但要实现的是多个子表格,只能选择一条数据

解决方法使用onselect,注意!!!确保子表格的rowkey是唯一

const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);


const expandedRowRender = (record: DataType) => {
  // record父行数据
  return (
    <ProTable<any>
      rowKey={(item: any) => `${item.id}-${record.id}`}
      rowSelection={{
         type: "radio",
         selections: [],
         selectedRowKeys: selectedRowKeys,
         // onChange: selectChange,
         // 不能使用onChange,会出现每一个子表格都能选择一条数据
         onSelect: (recordChild) => {
            // 父行id+子行id 确保唯一
            setSelectedRowKeys([`${recordChild.id}-${record.id}`])
         },
       }}
      />
    );
  };




<ProTable<DataType>

   expandable={{ expandedRowRender }}

   rowKey="company_id"

/>

Ant Design 的 Table 组件可以方便地嵌套子表格来展示层级数据。如果你想实现固定列效果,你可以结合使用 `proTable` 和 `ProColumns` 来管理表头以及设置列的冻结。 首先,你需要安装依赖项,例如在项目中安装 `antd@4.x` 版本: ```bash npm install antd pro-table@latest ``` 然后,创建一个包含嵌套子表格并且部分列固定的示例: ```jsx import React from 'react'; import { Table, ProTable } from 'antd'; import { ColumnsType, ColumnProps } from 'pro-table'; interface NestedData { // 你的数据结构... } const SubTable: React.FC<{ data: NestedData[] }> = ({ data }) => ( <ProTable<NestedData> bordered columns={[ // 根据你的子数据结构配置列 { title: '子表标题', dataIndex: 'childColumnTitle', children: [ { title: '子表子列', dataIndex: 'subChildColumnTitle', fixed: true, // 设置子列为固定列 }, ], }, ]} dataSource={data} /> ); const ParentTable: React.FC = () => { const [nestedData, setNestedData] = React.useState<NestedData[]>([ // 初始化数据 ]); return ( <div> {/* 主表,配置主表列,并处理数据更新 */} <Table columns={[ { title: '父表标题', dataIndex: 'parentColumnTitle', key: 'parentColumnTitle', }, // 嵌套子表格部分 { title: '子表', render: (text, record) => ( <SubTable data={record.children} /> ), }, ]} dataSource={nestedData} scroll={{ y: 200 }} // 如果需要滚动条,可以添加此属性 /> </div> ); }; export default ParentTable; ``` 记得替换 `NestedData`, `childColumnTitle`, `subChildColumnTitle`, 和 `parentColumnTitle` 为你实际的数据结构和列名。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值