位置: IT常识 - 正文

保姆级教程:Ant Design Vue中 a-table 嵌套子表格(保姆级教程什么意思)

编辑:rootadmin
保姆级教程:Ant Design Vue中 a-table 嵌套子表格

推荐整理分享保姆级教程:Ant Design Vue中 a-table 嵌套子表格(保姆级教程什么意思),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:保姆级教程起诉健身房,保姆级教程舞蹈,保姆级教程舞蹈,保姆级教程什么意思,保姆级教程分享,保姆级教程分享,保姆级教程分享,保姆级教程什么意思,内容如对您有帮助,希望把文章链接给更多的朋友!

前端为Ant Design Vue 版本为1.6.2,使用的是vue2

Ant Design Vue中 a-table 嵌套子表格,说的可能稍微墨迹了点,不过重点内容都说的比较详细,利于新人理解,高手可以自取完整代码

内容概述:完成样式及完整代码展示子表格嵌套只打开一个嵌套表格完成样式及完整代码展示保姆级教程:Ant Design Vue中 a-table 嵌套子表格(保姆级教程什么意思)

下图为官网图,会在每行最前面多一个加号,点击后会展开,看到子表格的数据

<template> <div> <a-card> <a-table :columns="columns" :data-source="datasource" :bordered="true" :expandedRowKeys="expandedRowKeys" @expand="getInnerData" :pagination="pagination"> <a-table slot="expandedRowRender" slot-scope="text" :columns="innerColumns" :data-source="inndata" :pagination="false"></a-table> <span slot="operation" slot-scope="text, record"> <a-button type="primary" icon="unordered-list" @click="getData(record)"> 详情 </a-button> </span> </a-table> </a-card> </div></template><script>import { axios } from '@/utils/request'const columns = [ { title: '序号', dataIndex: 'id', key: 'id', }, 。。。。。中间省略 { title: '操作', key: 'operation', width: '80px', scopedSlots: { customRender: 'operation' }, },];const innerColumns = [ { title: '子表单列', dataIndex: 'XXX', key: 'XXX', },];const inndata = [];export default { data() { return { datasource: [], columns, innerColumns, inndata, expandedRowKeys:[], pagination: { //分页 showSizeChanger: true, //是否分页 curPageSizeIndex: 0, pageSize: 10, //一页显示多少条 // total: 1, //总条数 current: 1, //当前显示页面 pageSizeOptions: ['10', '20', '30'], showTotal: (total) => `共计 ${total}条`, //显示总数 onShowSizeChange: (current, pagesize) => { this.pagination.current = current this.pagination.pageSize = pagesize this.options.offset = (current - 1) * pagesize this.options.limit = pagesize this.refreshData() }, onChange: (current, pageSize) => { this.pagination.current = current this.options.offset = (current - 1) * pageSize this.options.limit = pageSize this.refreshData() }, }, } }, mounted() { this.refreshData() }, methods: { refreshData() { axios({ url: 'url', method: 'post', }).then((res) => { if (res.errCode > 0) { this.$notification.error({ message: '错误信息', description: res.errMsg, }) return } console.log(res, '数据') this.datasource = res }) }, getInnerData(expanded, record) { this.expandedRowKeys=[] if (expanded) { var b = '' b=(record.id-1).toString() this.expandedRowKeys.push(Number(b.slice(-1))) this.inndata = []; this.inndata.push(this.datasource[record.id - 1]) } }, getData(record) { console.log(record); }, },}</script><style scoped></style>子表格嵌套

子格嵌套从代码层简单理解就是一个<a-table></a-table>中套了一个<a-table></a-table>,即<a-table><a-table></a-table></a-table>,当然,这只是一个简单理解,并不是这样写,要在其中添加一些东西。 抛开一些配置项,解释下:

<template> <div> <a-card> // 这里开始是父表格组件,columns -> 父级列名,datasource -> 父级表中的数据, @expand="getInnerData" -> 点开子表单的操作函数,pagination -> 分页的设置 <a-table :columns="columns" :data-source="datasource" @expand="getInnerData" :pagination="pagination"> // 这里开始是子表格组件,slot="expandedRowRender" 重点,必须有,innerColumns-> 子级列名,inndata-> 子级表中的数据, <a-table slot="expandedRowRender" slot-scope="text" :columns="innerColumns" :data-source="inndata" :pagination="false"></a-table>// 这里是子表格组件结尾 // 这里是父表格span,不用的可以删掉 <span slot="operation" slot-scope="text, record"> <a-button type="primary" icon="unordered-list" @click="getData(record)"> 详情 </a-button> </span> </a-table>// 这里是父表格组件结尾 </a-card> </div></template><script>// 数据请求axios import { axios } from '@/utils/request'// 设置父级列名const columns = [ { title: '序号', dataIndex: 'id', key: 'id', }, 。。。。。中间省略 { title: '操作', key: 'operation', width: '80px', scopedSlots: { customRender: 'operation' }, },];// 设置子级列名const innerColumns = [ { title: '子表单列', dataIndex: 'XXX', key: 'XXX', },];// 设置子级数据,写下面data里也行const inndata = [];export default { data() { return { datasource: [], columns, innerColumns, inndata, pagination: { //分页 showSizeChanger: true, //是否分页 curPageSizeIndex: 0, pageSize: 10, //一页显示多少条 // total: 1, //总条数 current: 1, //当前显示页面 pageSizeOptions: ['10', '20', '30'], showTotal: (total) => `共计 ${total}条`, //显示总数 onShowSizeChange: (current, pagesize) => { this.pagination.current = current this.pagination.pageSize = pagesize this.options.offset = (current - 1) * pagesize this.options.limit = pagesize this.refreshData() }, onChange: (current, pageSize) => { this.pagination.current = current this.options.offset = (current - 1) * pageSize this.options.limit = pageSize this.refreshData() }, }, } }, mounted() { // 进入页面直接运行的函数 this.refreshData() }, methods: { // 异步请求获取数据 refreshData() { axios({ url: 'url', method: 'post', }).then((res) => { if (res.errCode > 0) { this.$notification.error({ message: '错误信息', description: res.errMsg, }) return } console.log(res, '数据') // 将数据赋值给父级表格 this.datasource = res }) }, // 点开子级表格(就是点击那个加号)触发的函数 getInnerData(expanded, record) { // 判断是否点开 if (expanded) { // 点开后执行。。。 // 先将子级表格数据清空,否则之前点开别的行的数据也会在里面 this.inndata = []; // 再将父级点击的那一行的数据(record)给子级数据存进去,具体情况根据自己需求更改 this.inndata.push(record) } },// 点击父级表格表格span,也就是那个“详情”按钮触发的函数 getData(record) { console.log(record); }, },}</script><style scoped></style>

通过上述操作会发现能够实现基本的子表格嵌套,但是会发现点开一个子表单后,再点一个,两个都会打开,但是里面的子表格数据是相同的,这就是个很大的问题,为了解决这个问题,请看下面,这个在官网没直接写出来,API里有相关的参数,现在告诉你应该怎样操作

只打开一个嵌套表格

为了防止点开多个子表格内容相同,再结合我自己的使用场景,我只需要展开一个子表格就行,也就是说点开新的子表格后,原来的子表格自动关闭 下面把需要改动的代码片段给你们: 1. 父级中的修改内容

// 添加 :expandedRowKeys="expandedRowKeys" 目的是使expandedRowKeys只有最新点开子表单的key<a-table :columns="columns" :data-source="datasource" :bordered="true" :expandedRowKeys="expandedRowKeys" @expand="getInnerData" :pagination="pagination"> <a-table slot="expandedRowRender" slot-scope="text" :columns="innerColumns" :data-source="inndata" :pagination="false"></a-table> <span slot="operation" slot-scope="text, record"> <a-button type="primary" icon="unordered-list" @click="getData(record)"> 详情 </a-button> </span> </a-table>

2. 在data里加上空的 expandedRowKeys

export default { data() { return { datasource: [], columns, innerColumns, inndata, // 添加空的expandedRowKeys expandedRowKeys:[], 。。。。。。

3. 修改getInnerData函数

getInnerData(expanded, record) { // 先将expandedRowKeys数据清空 this.expandedRowKeys=[] if (expanded) { // 将父级的第几条数据传到expandedRowKeys里,我这用的是数据表里的id处理的,我的id是从1开始 // 我这是一页十条数据,要放入0-9,第一条是0,第十条是9,一定要是数字格式 // 再一个,注意下,假设使用的是数据中的第45条,record.id=45 // 但是传入 expandedRowKeys 只能是0-9,且是数字格式,那么应该将数字4传到expandedRowKeys中 // 因为record.id=45这条数据,在表格中的第五行,应该是4 // 所以有了下面的record.id-1,再转成字符串格式,取最后一位,再转成数字 // 也有人用key,id能够获取到,不过我没弄成功,就这样吧,实现功能就行 var b=(record.id-1).toString() this.expandedRowKeys.push(Number(b.slice(-1))) // 下面两行说过,我就把注释直接粘过来了 // 先将子级表格数据清空,否则之前点开别的行的数据也会在里面 this.inndata = []; // 再将父级点击的那一行的数据(record)给子级数据存进去,具体情况根据自己需求更改 this.inndata.push(record) } },
本文链接地址:https://www.jiuchutong.com/zhishi/298673.html 转载请保留说明!

上一篇:openCV实践项目:拖拽虚拟方块(opencv项目开发实战)

下一篇:在vue中使用echarts(vue中用echarts)

  • 微信解封邀请错了好友了怎么办(微信解封邀请错人了)

    微信解封邀请错了好友了怎么办(微信解封邀请错人了)

  • word表格怎么调整位置(word表格怎么调整某一个单元格)

    word表格怎么调整位置(word表格怎么调整某一个单元格)

  • 抖音怎么取消在线状态(抖音怎么取消在线功能)

    抖音怎么取消在线状态(抖音怎么取消在线功能)

  • 以太网被拔出怎么处理(以太网 被拔出)

    以太网被拔出怎么处理(以太网 被拔出)

  • 快手直播b类行为都包括啥(快手直播b类行业有哪些)

    快手直播b类行为都包括啥(快手直播b类行业有哪些)

  • 粉笔账号一次允许多少人登(粉笔账号最多可以几台设备登录)

    粉笔账号一次允许多少人登(粉笔账号最多可以几台设备登录)

  • 机械鼠标旁边的两个按键是干嘛的?(机械鼠标旁边的按钮)

    机械鼠标旁边的两个按键是干嘛的?(机械鼠标旁边的按钮)

  • mt742cha是什么版本(型号mt742za/a)

    mt742cha是什么版本(型号mt742za/a)

  • 小米2sc和小米2s有什么区别(小米2sc和小米4c)

    小米2sc和小米2s有什么区别(小米2sc和小米4c)

  • tp保护膜外面可以贴钢化膜吗(原装tp保护膜)

    tp保护膜外面可以贴钢化膜吗(原装tp保护膜)

  • iphonexr广角镜头怎么开(xr广角镜头在哪)

    iphonexr广角镜头怎么开(xr广角镜头在哪)

  • vivo储存卡在哪里设置(vivo手机存储卡在哪)

    vivo储存卡在哪里设置(vivo手机存储卡在哪)

  • 小米智能出行是个什么软件(小米智能出行功能在哪里打开)

    小米智能出行是个什么软件(小米智能出行功能在哪里打开)

  • 怎样把电脑文件放到桌面(怎样把电脑文件传到qq上)

    怎样把电脑文件放到桌面(怎样把电脑文件传到qq上)

  • 在国外可以用淘宝app吗(在国外可以用淘宝给国内的人买东西吗)

    在国外可以用淘宝app吗(在国外可以用淘宝给国内的人买东西吗)

  • 网易云怎么调音质(网易云怎么调音乐倍速)

    网易云怎么调音质(网易云怎么调音乐倍速)

  • 腾讯视频可以同时几个人用

    腾讯视频可以同时几个人用

  • 全球购怎么开店(拼多多全球购怎么开店铺)

    全球购怎么开店(拼多多全球购怎么开店铺)

  • 南宁公车可以刷微信吗(南宁市坐公车可以手机扫码付钱吗)

    南宁公车可以刷微信吗(南宁市坐公车可以手机扫码付钱吗)

  • win10开机启动文件夹路径是什么(win10开机启动文件路径)

    win10开机启动文件夹路径是什么(win10开机启动文件路径)

  • Win10系统realtek自动弹出怎么办 Win10系统realtek自动弹出解决方法(realtek自动安装)

    Win10系统realtek自动弹出怎么办 Win10系统realtek自动弹出解决方法(realtek自动安装)

  • el-input设置必填提示(单个&多个)(el-input_inner)

    el-input设置必填提示(单个&多个)(el-input_inner)

  • vscode里面使用vue的一些插件,方便开发(vue vscode snippets)

    vscode里面使用vue的一些插件,方便开发(vue vscode snippets)

  • 组成计税价格是销售额吗
  • 属于原始凭证的有哪些
  • 会计为什么要计折旧费
  • 营改增利息收入不能抵扣
  • 无形资产摊销年限
  • 上级工会返还的经费记什么收入
  • 当月发票不够用领用了下个月,下个月还能再领吗
  • 事业单位盘亏资产的处理
  • 公司注销实收资本怎么处理
  • 建筑工地的零星补单是指什么意思
  • 其他应收款余额在贷方,怎么填资产负债表
  • 注销公司方便吗
  • 核定征收是每个月都要交税吗
  • 促销赠品的会计处理
  • 航天发票上传不成功怎么手动上传
  • 为什么增值税发票综合服务平台进不去
  • 增值税发票税率是星号
  • 预充值发票可以列支吗?
  • 劳务费代驾计入什么科目?
  • 开发经济适用房是否需要缴纳土增税
  • 在建工程转固定资产凭证附件
  • 非货币性资产交换准则
  • 居民企业的判定条件
  • 1697510605
  • 对外捐赠会计和税法差异调整
  • 电脑维修中常用的软件
  • 收到员工水电费怎么做账
  • 进项发票没认证可以开红字申请单吗
  • 不动产进项税额转出计算公式
  • 非经营业务
  • php文库系统
  • 售后回购怎么做账务处理
  • 基建会计和建筑会计的区别
  • 过桥资金账务处理
  • php教程视频
  • 公允价值变动损益属于什么科目
  • 对外支付代扣代缴附加税享受减免吗
  • 固定资产不计提折旧有什么影响
  • php中的异常和错误怎么写
  • 残疾人保障基金减免政策
  • 2023前端面试题目
  • 二维码的实现原理和实现过程
  • php获取用户信息
  • 发票查询密码区空白怎么回事
  • 自由会计师
  • 人员经费指的是
  • /kill @p
  • 出现什么情况企业不能持续经营
  • 土地使用权的核算
  • 旅游发票可以做差旅费吗
  • 合并财务报表内部往来如何抵消
  • 购进原材料发生的保险费
  • 因管理不善材料被盗应记啥科目
  • 出口退税账务处理难吗
  • 单位定期存单利息如何记账
  • 房地产企业如何结转成本
  • 待抵扣税额转入进项税额的分录
  • 可以自行开具增值税专用发票的行业有哪些
  • 咨询费的支出范围
  • 印花税滞纳金怎么处理
  • 购入汽车属于什么会计科目
  • 生产销售库存表
  • 备查账的登记主要以什么来表述
  • 会计账簿的设置与登记
  • win8电脑恢复系统怎么操作
  • svchoost.exe - svchoost是什么进程 有什么作用
  • windows10预览
  • windows媒体中心关不掉
  • bootstrap怎么用
  • 微信小程序支付的钱怎么退款
  • window.open打开窗口设置背景色
  • jquery解决跨域问题
  • 核准类结算账户包括
  • 税务投诉撤销申诉
  • 上海市网上税务局登录
  • 深圳市的各区域排名
  • 地税登记序号查询系统
  • 2022年房产税减免政策疫情
  • 北京市地税总局电话
  • 华数tv业务认证账号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设