elementui table 动态表头表格(根据后台返回显示动态数据)

请添加图片描述

让后台返回的数据格式

   tabledData: [
        {
          tableNmae: "姓名",
          tableCode: "name",
        },
        {
          tableNmae: "性别",
          tableCode: "Gender",
        },
        {
          tableNmae: "a",
          tableCode: "a",
        },
        {
          tableNmae: "b",
          tableCode: "b",
        },
      ],
      dataList: [
        {
          name: "小红",
          Gender: "女",
          a: "1",
          b: "1",
        },
        {
          name: "小黑",
          Gender: "男",
          a: "1",
          b: "1",
        },
      ],

显示

	<el-table border style="width: 100%" height="100%" :data="dataList">
       <template v-for="item in tabledData">
         <el-table-column
             width="100"
             :key="item.tableNmae"
             :label="item.tableNmae"
             align="center"
          >
         	<template slot-scope="scope">
               <span>{{ scope.row[item.tableCode] }}</span>
            </template>
          </el-table-column>
        </template>
       </el-table>

创作不易 点赞支持一下趴

Element UI 的 Table 组件支持根据数据动态计算合并行的功能,这通常通过 Vue.js 中的数据绑定和事件处理来实现。当你需要合并特定条件下的行时,可以采用以下步骤: 1. 定义数据结构:每个表格行数据包含一个 `rowspan` 或类似属性,用于标识该行是否需要合并。例如,如果两行数据满足一定的条件(比如它们有相同的某个字段),则将 `rowspan` 设置为合并的次数。 ```javascript data() { return { tableData: [ { key: '1', value: '一行', rowspan: 1 }, { key: '2', value: '二行', colspan: 1 }, // 假设 colspan 合并列数 { key: '3', value: '三行', rowspan: 2 } // 这行会合并下一行 ] } } ``` 2. 使用模板渲染:在模板中,使用 `v-bind` 指令绑定 `rowspan` 到每一行,并在必要的地方设置 `v-if` 条件检查是否需要合并。 ```html <el-table> <el-table-column prop="key" label="Key"></el-table-column> <el-table-column prop="value" label="Value"> <template slot-scope="scope"> <div v-bind:class="{ merged: scope.row.rowspan > 1 }">{{ scope.row.value }}</div> <!-- 如果需要合并,可能会在这里添加合并行的特殊样式 --> </template> </el-table-column> </el-table> ``` 3. 表格行合并的逻辑:在组件内部或者适当的地方,编写函数来判断哪些行应该合并。例如,你可以监听数据变化,当发现满足合并条件的行时,更新 `rowspan` 属性。 ```javascript watch: { tableData(newData) { this.calculateRowSpans(newData); }, calculateRowSpans(data) { for (let i = 0; i < data.length - 1; i++) { if (/* 检查条件,如数据中的某个字段相等 */) { data[i].rowspan++; // 更新后续行的合并状态 data[i + 1].rowspan = Math.max(1, data[i + 1].rowspan - 1); } } } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值