当前位置:首页 > VUE

vue 实现跨行表格

2026-02-11 10:50:30VUE

跨行表格的实现方法

在 Vue 中实现跨行表格通常需要结合 HTML 的 rowspan 属性。以下是几种常见的方法:

使用原生 HTML 表格

通过 v-for 循环数据并结合 rowspan 属性实现跨行效果。数据需要预先处理以标记哪些单元格需要跨行。

<template>
  <table border="1">
    <tr>
      <th>姓名</th>
      <th>科目</th>
      <th>成绩</th>
    </tr>
    <tr v-for="(item, index) in tableData" :key="index">
      <td v-if="item.showName" :rowspan="item.nameRowspan">{{ item.name }}</td>
      <td>{{ item.subject }}</td>
      <td>{{ item.score }}</td>
    </tr>
  </table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', showName: true, nameRowspan: 2, subject: '语文', score: 90 },
        { subject: '数学', score: 85 },
        { name: '李四', showName: true, nameRowspan: 3, subject: '语文', score: 88 },
        { subject: '数学', score: 92 },
        { subject: '英语', score: 78 }
      ]
    }
  }
}
</script>

使用 Element UI 表格组件

Element UI 的 el-table 组件通过自定义 span-method 方法实现合并行或列。

<template>
  <el-table
    :data="tableData"
    border
    :span-method="arraySpanMethod"
    style="width: 100%">
    <el-table-column prop="name" label="姓名" width="180"></el-table-column>
    <el-table-column prop="subject" label="科目"></el-table-column>
    <el-table-column prop="score" label="成绩"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', subject: '语文', score: 90 },
        { name: '张三', subject: '数学', score: 85 },
        { name: '李四', subject: '语文', score: 88 },
        { name: '李四', subject: '数学', score: 92 },
        { name: '李四', subject: '英语', score: 78 }
      ]
    }
  },
  methods: {
    arraySpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 0) {
        if (rowIndex % 2 === 0) {
          return { rowspan: 2, colspan: 1 }
        } else {
          return { rowspan: 0, colspan: 0 }
        }
      }
    }
  }
}
</script>

使用 VxeTable 高级表格

VxeTable 提供了更便捷的合并单元格功能,通过配置 merge-cells 属性实现。

<template>
  <vxe-table
    border
    :data="tableData"
    :merge-cells="mergeCells">
    <vxe-column field="name" title="姓名"></vxe-column>
    <vxe-column field="subject" title="科目"></vxe-column>
    <vxe-column field="score" title="成绩"></vxe-column>
  </vxe-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', subject: '语文', score: 90 },
        { name: '张三', subject: '数学', score: 85 },
        { name: '李四', subject: '语文', score: 88 },
        { name: '李四', subject: '数学', score: 92 },
        { name: '李四', subject: '英语', score: 78 }
      ],
      mergeCells: [
        { row: 0, col: 0, rowspan: 2 },
        { row: 2, col: 0, rowspan: 3 }
      ]
    }
  }
}
</script>

数据处理建议

实现跨行表格前,通常需要对数据进行预处理:

  • 为需要合并的单元格添加标记属性(如 rowspan 值)
  • 计算每个合并区域的行数
  • 过滤掉被合并的重复数据行
function processData(originalData) {
  const result = []
  let currentName = ''
  let count = 0

  originalData.forEach((item, index) => {
    if (item.name !== currentName) {
      currentName = item.name
      count = originalData.filter(x => x.name === currentName).length
      result.push({ ...item, showName: true, nameRowspan: count })
    } else {
      result.push({ ...item, showName: false })
    }
  })

  return result
}

注意事项

  • 合并行时需要确保被合并的行数据具有相同的合并依据值(如相同的姓名)
  • 动态数据更新时需要重新计算合并规则
  • 过于复杂的合并逻辑可能影响渲染性能
  • 移动端显示时需要考虑合并后的表格在小屏幕下的可读性

以上方法可以根据具体项目需求选择使用,原生表格适合简单场景,UI 框架提供的功能更适合复杂交互需求。

vue 实现跨行表格

标签: 跨行表格
分享给朋友:

相关文章

vue实现简单表格

vue实现简单表格

Vue 实现简单表格的方法 使用原生 HTML 表格 在 Vue 模板中可以直接使用 HTML 原生表格标签,通过 v-for 动态渲染数据: <template> <tabl…

使用vue实现表格

使用vue实现表格

使用 Vue 实现表格 在 Vue 中实现表格可以通过多种方式完成,以下是一个基于 Vue 3 的示例,展示如何动态渲染表格数据并支持基础功能(如排序、筛选)。 基础表格实现 通过 v-for 循…

用css制作表格

用css制作表格

使用CSS制作表格 CSS可以用来样式化HTML表格,使其更具视觉吸引力和功能性。以下是几种常见的方法: 基础表格样式 通过CSS可以调整表格的边框、间距和颜色: <table>…

css怎么制作表格

css怎么制作表格

使用HTML和CSS创建表格 HTML提供<table>标签用于创建表格结构,结合CSS可以自定义样式。以下是基本实现方法: HTML结构 <table> <th…

css制作三行三列表格

css制作三行三列表格

使用HTML和CSS创建三行三列表格 通过HTML的<table>标签结合CSS样式可以轻松实现三行三列的表格结构。 <table class="three-by-three"&…

vue实现表格读取数据

vue实现表格读取数据

Vue 实现表格数据读取 在 Vue 中实现表格数据读取通常涉及以下关键步骤: 数据绑定与表格渲染 通过 v-for 指令动态渲染表格行,数据通常存储在组件的 data 或 Vuex 状态中:…