Antd 表格内通过rowClassName实现隔行变色的显示方法(转载)
ant design中 table组件很方便,在项目中遇到了需要实现奇偶行颜色不同以方便阅读的功能,主要用到了rowClassName这一api,通过判断index的奇偶来实现不同的样式分配。 rowClassName是一个函数,它的第一个参数是record,对应的是这一行的所有数据,第二个参数是index,对应的是table组件自己计数的第几行;
没有合并单元格的简单情况
直接判断index的奇偶作出不同的样式分配;
rowClassName={(record, index) =>
let className = 'light-row';
if (index % 2 === 1) className = 'dark-row';
return className;
}}
合并单元格后的复杂情况
这里对应github上的一个没有解决的issue;
在合并单元格后,由于被合并的那一行在Table组件自己的计数中仍然作为一行存在,所以按照上一种方法实现的效果会如图所示,特别吃藕;
我们想要的效果是在合并单元格后,第三行和第四行的颜色一样,第五行的颜色不同,如果依靠rowClassName中自带的index是不行的,所以这时候需要自己设定一个fakeIndex和一个用来指示此行是否被合并的标志(我设的是一个标志从此行起还有多少合并行的计数count,遇到普通行,fakeIndex加1;如果遇到被合并的行,则fakeIndex不加1,count减1。这里可以这么做的原因是antd的表格在渲染的时候是每渲染一行,就执行一次rowClassName的函数。
具体实现代码如下:
首先在React Component的constructor里面申明fakeIndex和count
constructor() {
super();
this.fakeIndex = 0;
this.licensesCount = 1;
}
然后在render渲染的<Table/>里面设置rowClassName函数
rowClassName={record => {
let className = 'light-row';
if (record.licenses.length > 1)
this.licensesCount = record.licenses.length; //用来初始化合并的行数
if (this.fakeIndex % 2 === 1) {
className = 'dark-row';
}
if (record.id.charAt(0) === 'c') { //判断是否是合并行
this.licensesCount--;
}
if (this.licensesCount === 1) this.fakeIndex++;
return className;
}}
这样就解决啦!
Antd 表格内通过rowClassName实现隔行变色的显示方法(转载)的更多相关文章
- devexpress表格控件gridcontrol设置隔行变色、焦点行颜色、设置(改变)显示值、固定列不移动(附源码)
介绍一些常用的gridcontrol设置. 1.设置隔行变色.首先设置显示隔行变色,步骤:OptionsView-->EnableAppearanceEvenRow-->true和Opti ...
- Excel2010隔行变色的实现方法 [也可套用格式即可]
这样excel隔行变色的效果,excel会自动隔行填充不同颜色. 公式说明: =MOD(ROW(),2)=0,实现的效果是偶数行自动填充底纹颜色 =MOD(ROW(),2)=1,实现的效果是奇数行自动 ...
- [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件
隔行变色功能,不用js,直接用css伪类就可以做,这个实例可以作为js插件开发很好的入门级实例.本文实现的隔行变色包括以下功能: 1,支持2种常用结构共存( div元素 和 表格类型 ) 2,一个页面 ...
- 怎样实现excel隔行隔列变色效果的方法
大家在使用excel的过程中,一定见过别人编排的excel文档,隔行添加单元格背景颜色,也就是通常所说的隔行变色效果.Excel中隔行变色效果的好处是:当在Excel中浏览一个非常大的工作簿中的数据时 ...
- jquery实现html表格隔行变色
效果图 实现代码: 通过css控制样式,利用jquery的addClass方法实现 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Trans ...
- jquery插件之表格隔行变色并鼠标滑过高亮显示
该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现表格隔行变色,且鼠标移动在表格的某一行上时,该行能高亮显示.整体代码如 ...
- css选择器,用来处理隔行变色的表格
CSS3 :nth-last-child() 选择器,可以用来处理隔行变色的表格,详情请参考网上资料.
- Javascript操作表格隔行变色
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 表格的一些原生js操作(隔行变色,高亮显示,添加删除,搜索)
看着网上的视频教程,虽说还是有点简单,但还是不免想记录下.这些操作包括(隔行变色,高亮显示,添加删除,搜索功能),而这儿就是涉及table的原有属性“tBodies” “rows” “cells”等几 ...
随机推荐
- SpringBoot中Shiro使用Pac4j集成CAS认证
SpringBoot中Shiro使用Pac4j集成CAS认证 Pac4j 简介 Pac4j与Shiro,Spring Security一样都是权限框架,并且提供了OAuth - SAML - CAS ...
- CRISPR/Cas9|InParanoid|orthoMCL|PanOCT|pan genome|meta genome|Core gene|CVTree3|
生命组学: 泛基因组学:用于描述一个物种基因组,据细菌基因组动力学,因为细菌的基因漂移使得各个细菌之间的基因组差异很大,(单个细菌之间的基因组差异是以基因为单位的gain&loss,而人类基因 ...
- Appium移动自动化测试实例-基于python
一.环境搭建 安装Android 环境变量.SDK.Android API.ADT等. 步骤1 安装SDK:下载地址为https://pan.baidu.com/s/1mi6PT9m.如提示错误:' ...
- VMware 虚拟机重启后获取不到ip的问题
问题: VMware 虚拟机重启后获取不到ip,如图: 解决: 打开windows服务管理器,将VMware相关服务启动. 验证: 重启网络服务后,成功获取ip.
- 查漏补缺:进程间通信(IPC):管道
管道是UNIX系统IPC的最古老形式,所有UNIX系统都提供此种通信机制.管道有以下两种局限性: (1)历史上,管道是半双工的(即数据只能在一个方向上流动). (2)管道只能在具有公共先祖的两个进程之 ...
- 人工智能VS投资者:股票市场上谁的胜算更高?
人工智能研究历史渊源,当人工智能与资本投资,尤其是股票投资相结合或许听起来有些异想天开,但正如科幻作家William Gibson所言:"未来已经到来,只是分布不均." 在股票市场 ...
- 曹工说Spring Boot源码(21)-- 为了让大家理解Spring Aop利器ProxyFactory,我已经拼了
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- Kubernetes搭建过程中使用k8s.gcr.io、quay.io、docker.io的镜像加速
前言 因为众所周知的原因,在使用Kubernetes和docker的时候会出现一些镜像无法拉取或者速度较慢的情况,错误信息类似以下: [ERROR ImagePull]: failed to pull ...
- HTML标签学习总结(2)
点我:HTLM标签学习总结(1) 11. 在网页制作过程过中,可以把一些独立的逻辑部分划分出来,放在一个<div>标签中,这个<div>标签的作用就相当于一个容器. 语法: & ...
- python 生成随机数、生成 uuid
1. 使用 uuid.uuid1 产生一个随机数 2. 在使用 random.sample() 产生一个随机字符串 3. 将两者进行拼接 import uuid import random def r ...