• Ant Design Vue中 a-table 嵌套子表格


    需求:在父表格中嵌套子表格,当点击展开某一行时,有展开的关闭当前展开行。使用a-table中的expandedRowKeys 属性和expand 方法。链接:Ant Design Vue

    一、属性说明:

       expandedRowKeys:这个主要是控制展开某行,它是一个数组形式,

       expand:这个可以接受两个参数,一个是是否展开,另一个是当前行的数据Function(expanded, record)。

    二、示例代码

    1. // 添加相应的属性和方法,这边自定义数据 我以官网为例 :expandedRowKeys="expandedRowKeys" 目的是使expandedRowKeys只有最新点开子表单的key
    2. <script lang="ts">
    3. import { DownOutlined } from '@ant-design/icons-vue';
    4. import { defineComponent } from 'vue';
    5. const columns = [
    6. { title: 'Name', dataIndex: 'name', key: 'name' },
    7. { title: 'Platform', dataIndex: 'platform', key: 'platform' },
    8. { title: 'Version', dataIndex: 'version', key: 'version' },
    9. { title: 'Upgraded', dataIndex: 'upgradeNum', key: 'upgradeNum' },
    10. { title: 'Creator', dataIndex: 'creator', key: 'creator' },
    11. { title: 'Date', dataIndex: 'createdAt', key: 'createdAt' },
    12. { title: 'Action', key: 'operation', slots: { customRender: 'operation' } },
    13. ];
    14. interface DataItem {
    15. key: number;
    16. name: string;
    17. platform: string;
    18. version: string;
    19. upgradeNum: number;
    20. creator: string;
    21. createdAt: string;
    22. }
    23. const data: DataItem[] = [];
    24. for (let i = 0; i < 3; ++i) {
    25. data.push({
    26. key: i,
    27. name: 'Screem',
    28. platform: 'iOS',
    29. version: '10.3.4.5654',
    30. upgradeNum: 500,
    31. creator: 'Jack',
    32. createdAt: '2014-12-24 23:12:00',
    33. });
    34. }
    35. const innerColumns = [
    36. { title: 'Date', dataIndex: 'date', key: 'date' },
    37. { title: 'Name', dataIndex: 'name', key: 'name' },
    38. { title: 'Status', key: 'state', slots: { customRender: 'status' } },
    39. { title: 'Upgrade Status', dataIndex: 'upgradeNum', key: 'upgradeNum' },
    40. {
    41. title: 'Action',
    42. dataIndex: 'operation',
    43. key: 'operation',
    44. slots: { customRender: 'operation' },
    45. },
    46. ];
    47. interface innerDataItem {
    48. key: number;
    49. date: string;
    50. name: string;
    51. upgradeNum: string;
    52. }
    53. const innerData: innerDataItem[] = [];
    54. for (let i = 0; i < 3; ++i) {
    55. innerData.push({
    56. key: i,
    57. date: '2014-12-24 23:12:00',
    58. name: 'This is production name',
    59. upgradeNum: 'Upgraded: 56',
    60. });
    61. }
    62. const expandedRowKeys = ref([])
    63. const expand = (expanded,record) => {
    64. expandedRowKeys.value = []
    65. // 只展开一行
    66. if (expanded) {
    67. //进这个判断说明当前已经有展开的了
    68. //返回某个指定的字符串值在字符串中首次出现的位置,下标为0
    69. let index = expandedRowKeys.value.indexOf(record.id)
    70. if (index > -1) {
    71. //如果出现则截取这个id,1d到1相当于0,针对重复点击一个
    72. expandedRowKeys.value.splice(index, 1)
    73. } else {
    74. //如果没出现则截取所有id,添加点击id,0到1,针对已经有一个展开,点另一个会进入判断
    75. expandedRowKeys.value.splice(0, expandedRowKeys.value.length)
    76. expandedRowKeys.value.push(record.id)
    77. }
    78. } else {
    79. //数组长度小于0,说明都没展开,第一次点击,id添加到数组,数组有谁的id谁就展开
    80. expandedRowKeys.value.push(record.id)
    81. }
    82. }
    83. export default defineComponent({
    84. components: {
    85. DownOutlined,
    86. },
    87. setup() {
    88. return {
    89. data,
    90. columns,
    91. innerColumns,
    92. innerData,
    93. expandedRowKeys,
    94. };
    95. },
    96. });
    97. script>
  • 相关阅读:
    一百八十六、大数据离线数仓完整流程——步骤五、在Hive的DWS层建动态分区表并动态加载数据
    openXBOW的使用(1)
    直播美颜SDK对比评测:技术原理与应用实践
    计算机毕业设计Java校园跑腿平台演示录像2020(源码+系统+mysql数据库+Lw文档)
    liveData和viewBinding的使用
    传奇开服架设之地图索引编辑器以及安装问题排查教程
    PasswordPusher:能通过URL安全传递密码
    民安智库(北京第三方窗口测评)开展汽车消费者焦点小组座谈会调查
    [附源码]java毕业设计血库管理系统
    基于JAVA网络作业提交与批改系统计算机毕业设计源码+数据库+lw文档+系统+部署
  • 原文地址:https://blog.csdn.net/weixin_73077230/article/details/139116445