element-ui中el-table组件的行号

场景:

列表的第一列为序号,为保护数据信息,防止恶意爬虫,不能把后端给的id直接显示想到这里;

解决:

通过动态绑定属性 row-class-name 。

templete:

<el-table :data="tableData3" height="550" style="width: 100%;background: transparent" @row-click="device_detail" :row-class-name="rowClassName">
    <el-table-column prop="id" label="序号" width="180"></el-table-column>
</el-table>

script:

rowClassName({row, rowIndex}) {
    //把每一行的索引放进row.id
    row.id = rowIndex+1;
}

效果:
效果图
很多人第一反应想到的是row-click方法,一般情况下row-click方法只能获取该行数据;
用row-class-name给每一行都加上行号index。

Element UIel-table 组件el-table-column 是列组件,而不是行组件,所以无法通过找到 el-table-column 组件来获取它所在的行号。如果你要获取行号,需要在 el-table 的模板使用 el-table-column 组件,并设置 :row-key 属性,这样 el-table-column 才能知道当前所在的行。 具体来说,你需要在 el-table 设置 :row-key 属性,如下所示: ``` <el-table :data="tableData" :row-key="getRowKey"> <el-table-column label="状态" min-width="130" fixed="right" align="center"> <el-switch v-model="enable[findRowIndex()]" :active-value="1" :inactive-value="0" active-text="开启" inactive-text="关闭" /> </el-table-column> ... </el-table> ``` 其,:row-key 属性绑定了一个函数 getRowKey,该函数用于返回每一行的唯一标识符。你需要根据你的数据结构来定义这个函数。 然后,你可以在 findRowIndex 函数获取当前 el-table-column 所在的行号,代码如下: ``` methods: { findRowIndex() { let currentRow = this.$parent.row // 获取当前行的数据对象 let rows = this.$parent.store.states.data // 获取所有行的数据对象 for (let i = 0; i < rows.length; i++) { if (rows[i] === currentRow) { return i } } return -1 // 如果没找到,则返回 -1 }, getRowKey(row) { return row.id // 假设每一行的唯一标识符为 id 属性 } } ``` 在这段代码,findRowIndex 函数的实现和之前的类似,只是获取当前行和所有行的方式有所不同。具体来说,我们通过 this.$parent.row 来获取当前行的数据对象,通过 this.$parent.store.states.data 来获取所有行的数据对象。然后,我们遍历所有行的数据对象,如果找到当前行,则返回该行的索引;如果没找到,则返回 -1。 需要注意的是,如果你在 el-table 使用了分页功能,那么只有当前页的数据会被渲染出来,而不是全部数据,这时候你需要在 findRowIndex 函数加入对当前页数据的判断逻辑。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值