【解决 Element UI 当中 el-table 中使用 show-summary 不显示合计一行】

项目场景:

问题:在进行数据统计的过程中使用到了element-ui 的 el-table 组件,出现了合计统计无法渲染情况。

示例场景:在制作统计一栏时需要用到 element-ui 当中的 el-table 表格组件,组件当中有 show-summary 参数可以实现表格的自动合计,在实际开发中出现了渲染失败或不渲染的情况导致无法展示合计一行
在这里插入图片描述


问题描述

提示:element ui 在参数以及方法较多时会出现某些功能渲染失败。

例如:在 el-table 当中专门添加了 show-summary 参数以及 :summary-method=“方法名” 方法却无法及时进行渲染从而导致无法展示表尾合计行

  <el-table
    :data="xxxxxx"
    border
    show-summary
    :summary-method="方法名"
    style="width: 100%">
	<el-table-column
      prop="xxx"
      label="xxx"
      width="180">
    </el-table-column>
  </el-table>

原因分析:

可能原因:组件和参数使用过多导致渲染出现异步而失效


解决方案:

在 table 当中添加 ref=“table1”

  <el-table
    :data="xxxxxx"
    border
    show-summary
    :summary-method="方法名"
    style="width: 100%"
    ref="table1"//重点!!!
>
	<el-table-column
      prop="xxx"
      label="xxx"
      width="180">
    </el-table-column>
  </el-table>

在 js 代码区中添加如下代码:

export default {
  updated () {
    this.$nextTick(() => {
      this.$refs['table1'].doLayout();
    })
  },
}

成功解决

在这里插入图片描述

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以在 el-table 的列配置添加一个计算合计的函数,并在模板使用该函数进行计算。 例如,在 data 定义一个计算总价的函数: ``` data() { return { totalPrice() { let total = 0; this.tableData.forEach(item => { total += item.price; }); return total; } } } ``` 然后在列配置加入计算合计的列: ``` <el-table :data="tableData"> <el-table-column label="商品名称" prop="name"></el-table-column> <el-table-column label="单价" prop="price"></el-table-column> <el-table-column label="总价" align="right">{{ totalPrice() }}</el-table-column> </el-table> ``` 在这种方式下,总价将会显示在表格最后一列。 ### 回答2: el-tableElement UI 一个常用的表格组件,我们可以通过它来展示数据,同时也支持添加合计列。 要加上合计列,我们首先需要在 el-table 定义需要展示数据的列。例如,我们有一张订单表格,包含商品名称、单价和数量等列,现在需要计算合计金额。我们可以定义一个新的列来展示合计金额,然后在这一列进行计算。 在 el-table ,我们可以使用 scoped slot 的方式来自定义每一列的内容。首先,我们可以使用 <template v-slot> 来指定每一列的内容,并使用 slot-scope 属性来获取当前行的数据。在我们的例子,我们需要获取每一行的单价和数量数据进行计算。 接下来,我们可以在相应的合计列的模板使用计算属性来计算合计金额。我们可以遍历所有行的数据,将每一行的单价乘以数量并累加起来得到合计金额。最后,将合计金额展示在合计列的位置。 总结起来,要在 el-table 加上合计列,你需要: 1. 在 el-table 定义需要展示数据的列; 2. 使用 scoped slot 的方式自定义每一列的内容; 3. 在合计列的模板使用计算属性进行合计金额的计算,并展示在相应位置。 这样,你就可以在 el-table 加上合计列,方便地查看数据的合计情况了。 ### 回答3: el-table 是基于 Element UI 的表格组件,在 Vue.js 的开发常用于展示数据。合计列是指在表格最后一行统计表格的数据。下面是在 el-table 添加合计列的步骤: 1. 首先,在 el-table 的模板添加一行用于显示合计的行,通常放在表格的最后一行。可以使用 `slot="append"` 来指定这一行是附加的,例如: ```html <el-table> <!-- 表格的内容 --> <template slot="append"> <!-- 合计行 --> </template> </el-table> ``` 2. 在合计使用 `el-table-column` 组件来定义每一列的合计值。可以通过设置 `show-summary` 属性为 `true` 来显示合计值。例如,对于一个数字类型的列,可以使用 `summary-method` 属性来指定计算合计值的方法。例如: ```html <el-table-column prop="sales" <!-- 假设这是一个销售额的列 --> label="销售额" :show-summary="true" :summary-method="sumSales" ></el-table-column> ``` 3. 在 Vue 组件的方法,定义 `sumSales` 方法用于计算合计值。例如: ```javascript methods: { sumSales(data) { if (data.length > 0) { // 计算合计值 return data.reduce((total, item) => total + item.sales, 0); } return 0; } } ``` 通过以上步骤,就可以在 el-table 添加合计列。合计列会在表格最后一行显示,每一列会根据定义的合计方法计算并显示对应的合计值。注意,合计合计值会根据表格的排序、筛选等操作实时更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值