如何在element table中每一行下面添加一个详情信息

img


如图所示,可以理解为要实现每一行数据,分为两行展示,其中第二行是详情信息的展示

elment ui table有一个展开行

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7670526
  • 这篇博客也不错, 你可以看下使用element中的table组件,如何单击某一行数据时选中对应的复选框
  • 除此之外, 这篇博客: element table只计算最后一列数据总和中的 若后台给你返回的有合计这个字段,只需前端在表格末尾渲染的情况话,这样就调用下面这个方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    拿来即用、其中返回this.total即是合计这个字段,只需将this.total修改为你的项目的合计字段即可

    getSummaries(param) {
            const { columns, data } = param;
            const sums = [];
            const currentIndex = columns.length-1;
            columns.forEach((column, index) => {
              if (index === 0) {
                sums[index] = '合计';
                return;
              }else if(currentIndex==index){
                 sums[index] = this.total;
              }else{
                 sums[index] = '';
              }
            });
            return sums;
          },
    
     <el-table
            border 
            show-summary 
            :summary-method="getSummaries"
            :formatter="formatter"  
            :data="accountCostList"   
     >
    

    完美撒花!!!!!!!

  • 以下回答由chatgpt基于相关博客总结生成:

    这个问题可以通过修改Element UI的表格组件来实现。以下是解决问题的步骤和代码:

    1. 首先,你需要在表格组件的template中添加一个template标签,用于展示详情信息:
    <template slot-scope="props">
      <tr>
        <!-- 此处为原始表格的内容 -->
        <td>{{ props.row.date }}</td>
        <td>{{ props.row.name }}</td>
        <td>{{ props.row.value }}</td>
        <td>{{ props.row.address }}</td>
      </tr>
      <tr>
        <!-- 此处为详情信息的内容 -->
        <td colspan="4">这里是详情信息</td>
      </tr>
    </template>
    
    1. 然后,在table组件上添加一个属性expand-row-keys,将其值设置为一个数组,数组的每个元素代表需要展开的行的key:
    <el-table :data="formData.tableData" style="width: 100%" :expand-row-keys="expandRowKeys">
    
    1. 在data里定义一个expandRowKeys数组,用于存储需要展开的行的key:
    data() {
      return {
        expandRowKeys: [] // 存储需要展开的行的key
      }
    }
    
    1. 然后,在table的methods属性里添加一个方法,用于在行被点击时展开或关闭详情信息。在该方法里,你需要根据点击的行的key来判断当前行的展开状态,然后相应地修改expandRowKeys数组:
    methods: {
      handleRowClick(row) {
        const index = this.expandRowKeys.indexOf(row.key)
        if (index === -1) { // 如果点击的行还未展开,则展开
          this.expandRowKeys.push(row.key)
        } else { // 如果点击的行已经展开,则关闭
          this.expandRowKeys.splice(index, 1)
        }
      }
    }
    
    1. 最后,在table组件上添加一个事件监听器,用于监听行的点击事件,并调用上面定义的方法:
    <el-table :data="formData.tableData" style="width: 100%" @row-click="handleRowClick">
    

    现在,点击每一行的时候,就可以展开或关闭对应的详情信息了。

    这样,你就成功地实现了在每一行下方添加一个详情信息的功能。希望这个解决方案对你有帮助!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^