Element+vue3.0 tabel合并单元格 span-method
:span-method="objectSpanMethod"详解:
在 objectSpanMethod 方法中,rowspan 和 colspan 的值通常用来定义单元格的行跨度和列跨度。
一般来说,rowspan 和 colspan 的值应该是大于等于1的整数,表示单元格的跨度。如果设置为0,则表示该单元格不跨行或列。然而,通常在 Vue 的 Element UI 表格中,rowspan 和 colspan 的值不应该为0,因为这可能会导致布局问题或显示异常。如果你尝试将 rowspan 或 colspan 设置为0,不生成单元格。
- rowspan: 定义单元格应横跨多少行。
- colspan: 定义单元格应横跨多少列。
- row: 当前行的数据对象。
- column: 当前列的配置对象。
- rowIndex: 当前行的索引(从0开始)。
- columnIndex: 当前列的索引(从0开始)。
HTML
数据:
tableData: [ { name: "整车外观", part: "车架编号照片1", result: true, img: "img", remark: "remark", }, { name: "整车外观", part: "车架编号照片2", result: true, img: "img", remark: "remark", }, { name: "整车外观", part: "车架编号照片3", result: true, img: "img", remark: "remark", }, { name: "动力传动", part: "车架编号照片1", result: true, img: "img", remark: "remark", }, { name: "动力传动", part: "车架编号照片2", result: true, img: "img", remark: "remark", }, { name: "动力传动", part: "车架编号照片3", result: true, img: "img", remark: "remark", }, { name: "车轮和转向检查", part: "车架编号照片1", result: true, img: "img", remark: "remark", }, { name: "车轮和转向检查", part: "车架编号照片2", result: true, img: "img", remark: "remark", }, { name: "车轮和转向检查", part: "车架编号照片3", result: true, img: "img", remark: "remark", }, ],
方法:
const objectSpanMethod = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => { if (columnIndex === 0 || columnIndex === 2) { // 当前列为0的时候不进行操作单元格 const name = row[column.property]; const preRow = tableData.value[rowIndex - 1]; const preValue = preRow ? preRow[column.property] : null; // 当前行的数据对象的name 是否和 上一行列的 name 是否相等 相等就不合并单元格 if (name === preValue) { return { rowspan: 0, colspan: 0 }; // 不生成单元格 } else { let rowspan = 1; for (let i = rowIndex + 1; i < tableData.value.length; i++) { const nextRow = tableData.value[i]; const nextValue = nextRow[column.property]; if (nextValue === name) { rowspan++; } else { break; } } return { rowspan, colspan: 1 }; } } };
下面是该代码的逻辑解释:
这段代码定义了一个名为 objectSpanMethod 的方法,该方法用于控制表格中单元格的合并。这个方法接收一个对象作为参数,该对象包含当前行的数据对象 (row)、当前列的配置对象 (column)、当前行的索引 (rowIndex) 和当前列的索引 (columnIndex)。
-
条件判断:首先,它检查当前列的索引 (columnIndex) 是否为0。如果是,表示正在处理表格的第一列。
-
获取数据和判断:
-
获取当前行的数据对象中的属性值,通过 row[column.property] 获取。
-
获取上一行的数据对象,通过 tableData.value[rowIndex - 1] 获取。然后,获取上一行相应属性的值。
-
通过比较当前行的属性值和上一行的属性值,判断它们是否相等。
返回值:
if
- 如果当前行的属性值与上一行的属性值相等,则返回 { rowspan: 0, colspan: 0 },意味着不生成单元格。
- 如果不相等,则进入另一个逻辑:
else
- 初始化 rowspan 为1,表示当前单元格应该只占用一行。
- 通过循环遍历下一行直到表格的末尾,检查下一行的相应属性值是否与当前行的属性值相等。
- 如果相等,则 rowspan 值加1。
- 如果不相等或者已经遍历到表格的末尾,则退出循环。
- 最后,返回 { rowspan, colspan: 1 },表示单元格应跨越 rowspan 行和1列。
总的来说,这段代码是用于在Vue的Element UI表格中根据特定的逻辑(比较当前行和上一行的属性值)来控制单元格的合并。
-
猜你喜欢
- 6天前(兰州旅游文化产业发展有限公司)甘肃省兰州市2023年乡村旅游暨A级旅游景区管理工作培训班开班
- 6天前(a级景区评定机构)全国A级旅游景区创建与提升培训班在敦煌市举办
- 6天前(夏日旅行海报)夏日旅行|精简行囊 向快乐进发
- 6天前(瑞虎7plus2021款)重塑10万级SUV价值标杆,全新一代瑞虎7PLUS冠军版给你惊喜
- 6天前(天气预报 华为)2025HDC华为天气上新系统级天气智能体,引领更智能的气象服务
- 6天前(新西兰航空官方网站)新西兰航空85周年焕新启航 全方位客舱升级,飞「悦」快意时光
- 6天前(星级饭店的发展困境)星级饭店转型之路:从市场逻辑到行业实践的深度探索
- 6天前(大黄山景区高质量发展联盟成立多少年)大黄山景区高质量发展联盟成立
- 6天前(泛舟诗海觅春迹什么意思)泛舟觅桃源,又一头部机构下场文旅赛道
- 6天前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章