位置: 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)

  • qq音乐如何邀请别人一起听歌(qq音乐如何邀请好友)

    qq音乐如何邀请别人一起听歌(qq音乐如何邀请好友)

  • 台积电算是中国企业吗(台积电是中国的还是外国的)

    台积电算是中国企业吗(台积电是中国的还是外国的)

  • 苹果11屏幕暗调不亮怎么办(苹果手机屏幕暗调不亮怎么办)

    苹果11屏幕暗调不亮怎么办(苹果手机屏幕暗调不亮怎么办)

  • 简述wlan两种网络结构(无线网络主要有哪两种类型)

    简述wlan两种网络结构(无线网络主要有哪两种类型)

  • s20韩版和国行区别(s21韩版和国行)

    s20韩版和国行区别(s21韩版和国行)

  • 西瓜视频星光值怎么算(西瓜视频的星光值怎么算钱?)

    西瓜视频星光值怎么算(西瓜视频的星光值怎么算钱?)

  • 苹果手机屏幕中间有个圆圈(苹果手机屏幕中间出现小圆点)

    苹果手机屏幕中间有个圆圈(苹果手机屏幕中间出现小圆点)

  • 主板电池没电会黑屏吗(主板电池没电会反复重启吗)

    主板电池没电会黑屏吗(主板电池没电会反复重启吗)

  • honorhlk-al00是什么手机(hlk-al00是什么型号)

    honorhlk-al00是什么手机(hlk-al00是什么型号)

  • 淘宝取消订单有什么影响(淘宝取消订单有赔偿吗)

    淘宝取消订单有什么影响(淘宝取消订单有赔偿吗)

  • 微信删的好友能看我的朋友圈吗(微信删的好友能找回来么没有手机号)

    微信删的好友能看我的朋友圈吗(微信删的好友能找回来么没有手机号)

  • 中国移动光猫光信号灯不亮(中国移动光猫光纤线怎么拔图解)

    中国移动光猫光信号灯不亮(中国移动光猫光纤线怎么拔图解)

  • 华为nova5的OTG在哪

    华为nova5的OTG在哪

  • 物联网中的uwb是什么(usr物联网)

    物联网中的uwb是什么(usr物联网)

  • 拼多多is昵称是指什么(拼多多呢称是什么)

    拼多多is昵称是指什么(拼多多呢称是什么)

  • 红米note4x是lcd屏幕吗

    红米note4x是lcd屏幕吗

  • 京东等待收货是什么意思(京东等待收货是怎么回事)

    京东等待收货是什么意思(京东等待收货是怎么回事)

  • 乐视手机怎么开空调(乐视手机怎么开启悬浮球)

    乐视手机怎么开空调(乐视手机怎么开启悬浮球)

  • ios13怎样查找位置(苹果13.6.1系统怎么查找定位)

    ios13怎样查找位置(苹果13.6.1系统怎么查找定位)

  • 淘宝怎么把删除的订单恢复(淘宝怎么把删除的好友恢复)

    淘宝怎么把删除的订单恢复(淘宝怎么把删除的好友恢复)

  • ipad怎么连蓝牙耳机(ipad怎么连蓝牙运动耳机)

    ipad怎么连蓝牙耳机(ipad怎么连蓝牙运动耳机)

  • 荣耀20原装充电器多少w(荣耀20原装充电器多少钱)

    荣耀20原装充电器多少w(荣耀20原装充电器多少钱)

  • 天翼网关2.0怎么设置(天翼网关2.0怎么插线)

    天翼网关2.0怎么设置(天翼网关2.0怎么插线)

  • lazada是什么平台(shopeelazada是什么平台)

    lazada是什么平台(shopeelazada是什么平台)

  • word文档怎么关闭护眼模式(word文档怎么关闭批注)

    word文档怎么关闭护眼模式(word文档怎么关闭批注)

  • 深色模式在哪里(苹果手机的深色模式在哪里)

    深色模式在哪里(苹果手机的深色模式在哪里)

  • Web项目部署环境搭建:JDK + Tomcat + IDEA +MySQL(java web项目部署)

    Web项目部署环境搭建:JDK + Tomcat + IDEA +MySQL(java web项目部署)

  • 帝国CMS怎么解决单次只能上传20个文件的问题(帝国cms教程官方完整版)

    帝国CMS怎么解决单次只能上传20个文件的问题(帝国cms教程官方完整版)

  • 如何进入phpcms后台(phpcms教程)

    如何进入phpcms后台(phpcms教程)

  • 新成立小规模纳税人开发票如何办理
  • 会计报表编制有哪些标准
  • 分给当期投资者利润如何做会计分录?
  • 税收返还要交税吗
  • 从基本存款账户之外的银行结算账户转账存入
  • 营改增后固定资产进项税抵扣规定
  • 子公司具有独立的法律地位吗
  • 定额发票报销需要明细吗
  • 其他应收款要做账吗
  • 年金的缴费基数
  • 小规模纳税人取得防伪税控系统普通发票
  • 投资长期溢价债券,容易获取投资收益
  • win10任务栏显示年月日
  • 怎么取消电脑开机自动启动软件
  • nwtray.exe - nwtray是什么进程 作用是什么
  • 企业并购的基本方法有
  • linux-base
  • 申请高新技术企业的好处
  • 场地租赁费需要计提吗
  • 爬坑图片卡通
  • python怎么学
  • yolov5 output
  • 建厂购买材料的会计科目
  • 折扣和佣金合法的两个条件是什么?
  • 普通发票可以抵扣进项吗
  • 注解注入
  • cms采集网站
  • mongodb基本操作命令
  • 帝国cms会员发布信息数量
  • 开了发票不做收入的账务处理是?
  • 新准则下其他应收坏账
  • 进项税额转出是借方科目还是贷方科目
  • 去年的成本发票做错了需要补税吗
  • 一般哪些收据可以抵扣
  • 工资代发户怎么开
  • 增值税红字冲销能跨年吗
  • 报关单是美元收欧元
  • 住院发票能否用医保卡
  • 企业发票冲红的风险
  • 多余备用金记账会计分录
  • 审核记账凭证的心得
  • 会计账簿的登记实训报告
  • window系统怎么用
  • w10桌面
  • ias.exe是什么程序
  • windowsxp如何创建宽带连接
  • win8如何关闭开始屏幕
  • 如何打开mac系统终端
  • fcbzmgr.exe
  • owmngr.exe - owmngr是什么进程 作用是什么
  • PQIMountSvc.exe是什么进程 PQIMountSvc进程查询
  • linux中sed命令
  • hyper虚拟机连接外网
  • win7系统如何调节电脑屏幕亮度
  • linux系统的配置
  • linux运行环境搭建
  • Unity3D游戏开发(第2版)pdf
  • js常用排序算法
  • Android: AudioFlinger中AudioPolicy的简单介绍
  • android中的动画有哪几类,它们的特点和区别是什么?
  • python 如何
  • shell脚本-p
  • python socket传输文字到网页
  • python怎么编写二维码
  • JavaScript+html5 canvas绘制渐变区域完整实例
  • unity image fillamount
  • jquery获取点击元素
  • js判断页面是否打开
  • jquery常用插件有哪些
  • python的对象
  • 微博评论系统
  • 青岛税务局领导
  • 税务ukey怎么升级不了
  • 甘肃税务局电子税务局app
  • 已代扣代缴个人所得税,他人还需要缴纳个人所得税吗?
  • 多交了个人所得税怎么算
  • 企业所得税一年算几次
  • 船员工资是否需交税
  • 资源税什么意思
  • 税收收入弹性值
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设