在web开发中,表格的行合并是一个很常见的需求。antd也提供了这种功能,但是文档中的示例代码却和我想象中的相差甚远,如下所示,它是通过一种很笨的办法实现的行合并。这样当表格的数据源是动态获取的,我们就没有办法动态的合并行。

官方代码

蚂蚁框架的官方文档代码,我的代码见最后


import { Table } from 'antd';// In the fifth row, other columns are merged into first column
// by setting it's colSpan to be 0
const renderContent = (value, row, index) => {const obj = {children: value,props: {},};if (index === 4) {obj.props.colSpan = 0;}return obj;
};const columns = [{title: 'Name',dataIndex: 'name',render: (text, row, index) => {if (index < 4) {return <a href="javascript:;">{text}</a>;}return {children: <a href="javascript:;">{text}</a>,props: {colSpan: 5,},};},
}, {title: 'Age',dataIndex: 'age',render: renderContent,
}, {title: 'Home phone',colSpan: 2,dataIndex: 'tel',render: (value, row, index) => {const obj = {children: value,props: {},};if (index === 2) {obj.props.rowSpan = 2;}// These two are merged into above cellif (index === 3) {obj.props.rowSpan = 0;}if (index === 4) {obj.props.colSpan = 0;}return obj;},
}, {title: 'Phone',colSpan: 0,dataIndex: 'phone',render: renderContent,
}, {title: 'Address',dataIndex: 'address',render: renderContent,
}];const data = [{key: '1',name: 'John Brown',age: 32,tel: '0571-22098909',phone: 18889898989,address: 'New York No. 1 Lake Park',
}, {key: '2',name: 'Jim Green',tel: '0571-22098333',phone: 18889898888,age: 42,address: 'London No. 1 Lake Park',
}, {key: '3',name: 'Joe Black',age: 32,tel: '0575-22098909',phone: 18900010002,address: 'Sidney No. 1 Lake Park',
}, {key: '4',name: 'Jim Red',age: 18,tel: '0575-22098909',phone: 18900010002,address: 'London No. 2 Lake Park',
}, {key: '5',name: 'Jake White',age: 18,tel: '0575-22098909',phone: 18900010002,address: 'Dublin No. 2 Lake Park',
}];ReactDOM.render(<Table columns={columns} dataSource={data} bordered />,mountNode);

动态合并行代码示例

因为在网上也没有找到合适的解决方案,所以把自己的实现分享出来,希望对大家有所帮助。

在线演示

表格数据中被合并的列应该是经过排序的,保证所有相同的行都呆在一起能够被合并


const { Table } = antd;// In the fifth row, other columns are merged into first column
// by setting it's colSpan to be 0
const renderContent = (value, row, index) => {const obj = {children: value,props: {},};return obj;
};const data = [{key: '1',name: 'A',age: 32,tel: '0571-22098909'
}, {key: '2',name: 'A',age:12,tel: '0571-22098333'
}, {key: '3',name: 'B',age: 32,tel: '0575-22098909'
}, {key: '4',name: 'B',age: 18,tel: '0575-22098909'
}, {key: '5',name: 'B',age: 18,tel: '0575-5'
}, {key: '6',name: 'C',tel: '0571-6',age:12
}, {key: '7',name: 'C',tel: '0571-7',age:19
}];var myArray=new Array(data.length);console.error(data.length);var func =(data)=>{//保存上一个namevar x = "";//相同name出现的次数var count = 0;//该name第一次出现的位置var startindex=0;for(var i = 0;i<data.length;i++){//这里是合并name列,根据各自情况大家可以自己完善var val = data[(i)].name;if(i==0){x=val;count=1;myArray[0]=1}else{if(val==x){count++;myArray[startindex]=count;myArray[i]=0}else{count = 1;x=val;startindex=i;myArray[i]=1}}}
}func(data)
console.table(myArray)const columns = [{title: 'Name',dataIndex: 'name',render: (value, row, index) => {const obj = {children: value,props: {},};obj.props.rowSpan = myArray[index];return obj},
}, {title: 'Age',dataIndex: 'age',render: renderContent,
}, {title: 'Home phone',dataIndex: 'tel',render: renderContent,
}];ReactDOM.render(<Table columns={columns} dataSource={data} bordered />,mountNode);

Ant Design之表格动态合并行相关推荐

  1. vue将每个路由打包成html,Ant Design Vue pro 动态路由的实现和打包

    Ant Design Vue pro 动态路由的实现和打包 Ant Design Vue pro 动态路由的实现和打包 配置路由权限 在config文件夹下router.config.js中配置路由权 ...

  2. antd 表格树如何展开_React Ant Design树形表格的复杂增删改

    React Ant Design树形表格的复杂增删改 ​ 最近由于业务接触了antd,使用antd完成一个复杂的树形表格的显示以及修改.在这其中碰见了很多坑,不少功能antd只写了初步的功能,更为细化 ...

  3. Ant Design Vue 表格筛选时只进行前台的按页筛选修改为后台的全局筛选

    原因分析 在我们使用 Ant Design Vue 表格筛选功能时会发现,如果只是按照例子来,只是前端的按页筛选,并不能都进行全局筛选,原因有两点: 1.我们筛选的时候,只是进行前端的数据过滤,并没有 ...

  4. ant design pro vue 动态路由 流程详解

    ant design pro vue 动态路由 流程详解 前言 流程图 流程1 src/permission.js 流程2 src/store/modules/user.js 流程3 src/perm ...

  5. ant design vue 表格中时间戳转换成时间格式显示

    ant design vue 表格中时间戳转换成时间格式显示 原始数据表格如上图,因为接口传递过来的时间是10位int类型的时间戳格式,所以前端需要我们把时间格式化. step1 安装moment n ...

  6. Ant Design Pro 4 动态菜单icon丢失解决办法

    最近在开发人事管理系统,其中菜单是需要动态渲染,针对不同角色授权不同的菜单权限. 路由由后端返回,格式如下: [ { "path": "/", "na ...

  7. ant design pro实现动态路由以及权限的控制

    dynamic-menu-router ant design pro动态路由权限,目前基于ant design pro1.4.4版本,只用于左侧菜单权限的设置和按钮权限设置,关于最新版本权限的更新,敬 ...

  8. ant design table 表格空白

    据我查找,情况可能有如下几点: 1.table设置了tableLayout:fixed,导致每个格子的css的color:transparent改变了原来的颜色 2.table的columns设置了e ...

  9. Ant Design Vue 表格内编辑(附完整源码及效果图)

    效果图: 实现关键代码就是表单的 columns 属性对象下标的 scopedSlots: scopedSlots: {customRender: '' } 实现完整代码: <template& ...

最新文章

  1. python框架之Flask基础篇(一)
  2. pandas.DataFrame删除/选取含有特定数值的行或列实例
  3. 使用TreadPool时的ThreadLocal示例
  4. QT的QFile类的使用
  5. 在android studio中配置ndk开发环境
  6. 经济寒冬?毕业生找不到好工作?来看看这个。
  7. redis持久化到mysql的方案_redis进阶: 数据持久化
  8. Java架构-面试怎么谈薪资——让自己的利益最大化
  9. SQLite使用报告
  10. 富文本编辑器KindEditor在前端JS的应用
  11. 公众号jdk 获取手机号_怎样快速获取使用国庆节公众号文章的素材和模板
  12. SIM800A模块发短信调试中出现的问题并解决
  13. python爬取全国真实地址_python爬虫学习之爬取全国各省市县级城市邮政编码
  14. Vue - 加载静态图片的方式
  15. 萌新小白的HTML第一天学习
  16. 193页PPT读懂《数字化转型方法论》,强烈建议收藏!
  17. .crx文件怎么解压
  18. c语言工业键盘确认键,工业键盘的基础知识
  19. 微信“小游戏”遭抄袭质疑;程维霸气谈美团约战;苹果就降速门道歉 |一周业界事
  20. USACO January 2014 Bronze Level

热门文章

  1. 多元函数微分学之偏导数
  2. 原型图都可以用什么软件做?分享这9款给你
  3. 开发者大会优先谈云,对于微软Win10还重要吗
  4. 线性代数——对向量的线性组合中的“线性”的理解
  5. Matlab龚珀兹曲线模型预测,统计预测方法及预测模型.ppt
  6. pythonindex是什么意思_python中index的用法是什么
  7. 【GT跑车】GT跑车是什么意思 GT跑车有哪些
  8. 初识C语言————3
  9. 什么是生态型平台企业?
  10. 北斗通讯协议4.0 java_北斗一串口协议4.0.pdf