当前位置:   article > 正文

vue el-table 单机行选中高亮并获取行数据,再次单击取消行选中_el-table点击行当前行高亮

el-table点击行当前行高亮

 1. 效果展示

当没有行被选中时,按钮是不可用的

 当有行被选中时,该行高亮,同时按钮可用

 再次点击该行,取消高亮,按钮不可用

 

2. 代码

2.1 组件代码

table设置了highlight-current-row,可以在选中某个数据行时,高亮该行。

table设置了@row-click="handleRowClick",绑定了行点击事件,用于获取被点击的行数据。

table设置了ref="table",用于script中获取table对象并对其进行操作,通过this.$refs.table即可拿到。

另外这里放了一个button,绑定了一个属性disabled,当有数据行被选中时,按钮才可用。

  1. <el-card>
  2. <el-row>
  3. <el-button type="primary" plain size="large" :disabled="disableLockReleaseButton">
  4. <el-icon size="large">
  5. <Lock />
  6. </el-icon>
  7. </el-button>
  8. </el-row>
  9. <el-table :data="tableData" stripe style="width: 100%" highlight-current-row @row-click="handleRowClick" ref="table">
  10. <el-table-column prop="date" label="Date" width="180" />
  11. <el-table-column prop="name" label="Name" width="180" />
  12. <el-table-column prop="address" label="Address" />
  13. </el-table>
  14. </el-card>

2.2 脚本script

data:

这里表格绑定的数据对象tableData是写死的,实际可以根据需求从后端获取。

这里声明了currentRowObj,用于保存选中的行内容。

这里声明了disableLockReleaseButton,用于控制按钮是否可用。

methods:

实现行点击事件的方法,入参有三个row,event,column,这里根据前面全局定义的currentRowObj和当前点击的行row进行比较,如果相同,说明点击了同一行,则取消该行选中,清空currentRowObj;否则,保存当前点击行rowcurrentRowObj

  1. data() {
  2. return {
  3. tableData: [
  4. {
  5. date: '2016-05-03',
  6. name: 'Tom',
  7. address: 'No. 189, Grove St, Los Angeles',
  8. },
  9. {
  10. date: '2016-05-02',
  11. name: 'Tom',
  12. address: 'No. 189, Grove St, Los Angeles',
  13. },
  14. {
  15. date: '2016-05-04',
  16. name: 'Tom',
  17. address: 'No. 189, Grove St, Los Angeles',
  18. },
  19. {
  20. date: '2016-05-01',
  21. name: 'Tom',
  22. address: 'No. 189, Grove St, Los Angeles',
  23. },
  24. ],
  25. currentRowObj: undefined,
  26. disableLockReleaseButton: true,
  27. }
  28. },
  29. methods: {
  30. // 处理行点击事件
  31. async handleRowClick(row, event, column) {
  32. if (this.currentRowObj == row) {
  33. console.log('再次点击同一行,取消当前行选中')
  34. // 取消当前行选中,清空保存的当前行数据
  35. this.$refs.table.setCurrentRow()
  36. this.currentRowObj = undefined
  37. // 此时没有行被选中,控制按钮不可用
  38. this.disableLockReleaseButton = true
  39. } else {
  40. console.log('点击新行,选中并高亮该行,获取当前行数据')
  41. this.currentRowObj = row
  42. // 此时有行被选中,控制按钮可用
  43. this.disableLockReleaseButton = false
  44. }
  45. },
  46. }

3. 小结

网上查了很多资料,各种办法都试了,都不行,可能与插件版本、环境等各种因素有关。

最终本文尝试出该方法可以解决单机行选中,再次单击取消选中的问题。

如果本文的方法不能解决你的问题,可以参考我之前查阅过的资料。

el-table 高亮取消选中-掘金 (juejin.cn)

Vue elementui table单选 - 掘金 (juejin.cn)

聊一聊el-table勾选复选框时高亮行,行选中时勾选复选框的问题! - 掘金 (juejin.cn)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/114506
推荐阅读
相关标签
  

闽ICP备14008679号