element的el-table自定义最后一行的实现代码

教程下载地址: 网赚博客https://www.piaodoo.com/创业项目排行榜前十名https://www.piaodoo.com/


element的el-table自定义最后一行

场景:

最后一行要显示一些其他结果,用的是element  ui 自带的数据总计的属性;返回一个数组,会按下标进行展示。

代码:

  <el-table 
       :summary-method="getSummaries"
        show-summary 
       :data="tableData"
       stripe
        style="width: 50% ;margin-top: 20px;font-size: 15px;">
    <el-table-column prop="date" label="日期" width="180">
    </el-table-column>
      <el-table-column prop="name" label="姓名" width="180">
        </el-table-column>
       <el-table-column prop="address" label="地址">
        </el-table-column>
        </el-table>
重点在于getSummaries这个自定义的方法,返回一个数组即可以显示
    getSummaries(param) {
            const { columns } = param
            const sums = []
            columns.forEach((column, index) => {
                switch (index) {
                    case 0:
                        sums[index] = '是否通过'
                        break
                    case 1:
                        sums[index] = 'erewrwr'
                        break
                    case 2:
                        sums[index] = 'erewrwr'
                        break
                    case 3:
                        sums[index] = 'erewrwr'
                        break
                }
            })
            return sums
        },

element-ui中的el-table底部固定指定行

1,固定一行合计的情况

https://element.eleme.cn/#/zh-CN/component/table

直接使用官方文档上的summary-method

2,固定指定行或者多行

使用样式去固定

例子:(计算列表数据的平均值,最大值,最小值并固定底部)

1,计算数据的值

protected calcData(data: any) {
        const sums: any = {};
        const max: any = {};
        const min: any = {};
        const columns = this.$refs["coverTable"]?.columns;
        columns.forEach((column: any, index: number) => {
            if (index === 0) {
                sums[column.property] = "平均值";
                max[column.property] = "最大值";
                min[column.property] = "最小值";
                return;
            }
            const values = data.map((item: any) => Number(item[column.property]));
            if (!values.every((value: any) => isNaN(value))) {
                // 总和
                sums[column.property] = values.reduce((prev: any, curr: any) => {
                    const value = Number(curr);
                    if (!isNaN(value)) {
                        return prev + curr;
                    } else {
                        return prev;
                    }
                }, 0);
                // 最大值
                max[column.property] = values.reduce((prev: any, curr: any) => {
                    const value = Number(curr);
                    if (!isNaN(value) && curr > prev) {
                        return curr;
                    } else {
                        return prev;
                    }
                });
                // 最小值
                min[column.property] = values.reduce((prev: any, curr: any) => {
                    const value = Number(curr);
                    if (!isNaN(value) && curr > prev) {
                        return prev;
                    } else {
                        return curr;
                    }
                });
            } else {
                sums[column.property] = "N/A";
                max[column.property] = "N/A";
                min[column.property] = "N/A";
            }
        });
        const average: any = {};
        for (const i in sums) {
            if (!isNaN(sums[i])) {
                average[i] = (sums[i] / data.length).toFixed(3);
            } else {
                average[i] = sums[i];
            }
        }
        if (this.tableData.length > 0) this.tableData.push(average, max, min);
    }

2,对要固定的三行设置class

// 行固定
    tableRowClassName(params: any) {
        const { row, rowIndex } = params;
        row.index = rowIndex;
        // 最后三行固定
        if (rowIndex + 1 === this.tableData.length - 2) {
            return `tr-fixed fixed-row2`;
        } else if (rowIndex + 1 === this.tableData.length - 1) {
            return `tr-fixed fixed-row1`;
        } else if (rowIndex + 1 === this.tableData.length) {
            return `tr-fixed fixed-row`;
        } else {
            return ``;
        }
    }

3, 样式控制

.el-table {
    .tr-fixed{
        display: table-row;
        position: sticky;
        bottom: 0;
        width: 100%;
        td {
            border: 1px solid #f3f5fa;
            background: #fff;
        }
    }
    .fixed-row{
        bottom: 0;
    }
    .fixed-row1{
        bottom: 0.5rem;
    }
    .fixed-row2{
        bottom: 1rem;
    }
}

4,效果

到此这篇关于element的el-table自定义最后一行的文章就介绍到这了,更多相关element的el-table自定义最后一行内容请搜索网赚博客https://www.piaodoo.com/以前的文章或继续浏览下面的相关文章希望大家以后多多支持网赚博客https://www.piaodoo.com/!

                        友情连接:  

茂名一技http://www.szsyby.net/


茂名一技http://www.enechn.com/


美文集http://www.tpyjn.cn/


手游排行前十名http://www.bjkhrx.com/


蔚来汽车http://www.weilaiqiche.cn/

### Element UI el-table 自定义展开行 为了实现在 `el-table` 组件中自定义展开行的功能,可以利用 `expand-row-keys` 和 `row-key` 属性来控制哪些行应该被默认展开。此外,还可以通过 Vue 的 `ref` 方法手动操作表格的行为。 #### 利用 expand-row-keys 实现默认展开特定行 在 `el-table` 上设置 `expand-row-keys` 属性并绑定到一个数组变量,此数组包含了希望自动展开的行对应的键值。同时要确保设置了 `row-key` 来唯一标识每一行的数据项[^3]: ```html <template> <div> <el-table :data="tableData" style="width: 100%" :expand-row-keys="expandedRowKeys" row-key="id"> <!-- 表格列配置 --> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { id: 1, name: "张三", age: 28 }, { id: 2, name: "李四", age: 24 } ], expandedRowKeys: [1], // 默认展开ID为1的那一行 }; } }; </script> ``` #### 手动控制展开/收起行为 如果需要更灵活地管理哪几行应当展开,则可以在 JavaScript 中调用 `toggleRowExpansion()` 方法来进行动态切换。这通常会在某些事件触发时执行,比如点击按钮或其他交互动作发生之后: ```javascript this.$refs.table.toggleRowExpansion(row); // 收放指定的一行 // 或者批量处理多行 rows.forEach((item) => this.$refs.table.toggleRowExpansion(item)); ``` 上述代码片段展示了如何基于给定条件让特定数据记录保持初始状态下即已打开的状态;同时也介绍了怎样借助编程方式去改变当前显示情况下的折叠状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值