当前位置:   article > 正文

ElementUi 表格双击可编辑_element表格双击编辑

element表格双击编辑

一、首先给表格绑定双击事件:

@row-dblclick="dbclick"

二、再绑定一个单元格的 className 的回调方法,目的是让你选中的那个单元格绑定行和列的index:

:cell-class-name="tableCellClassName"

三、其他逻辑直接上代码:

  1. <template>
  2. <div class="container">
  3. <el-table
  4. :data="tableData"
  5. border
  6. @row-dblclick="dbclick"
  7. :row-style="{height:'45px'}"
  8. :cell-class-name="tableCellClassName">
  9. <el-table-column prop="date" label="日期"></el-table-column>
  10. <el-table-column prop="name" label="姓名" align="center">
  11. <template slot-scope="scope">
  12. <!--v-if去判断双击的是不是当前单元格-->
  13. <el-input
  14. @blur="hideInput"
  15. size="mini"
  16. :ref="scope.row.index + ',' + scope.column.index"
  17. v-model="scope.row.name"
  18. v-if="scope.row.index + ',' + scope.column.index == currentCell">
  19. </el-input>
  20. <span v-else>{{scope.row.name}}</span>
  21. </template>
  22. </el-table-column>
  23. <el-table-column prop="address" label="地址" align="center">
  24. <template slot-scope="scope">
  25. <el-input
  26. @blur="hideInput"
  27. size="mini"
  28. :ref="scope.row.index + ',' + scope.column.index"
  29. v-model="scope.row.address"
  30. v-if="scope.row.index + ',' + scope.column.index == currentCell">
  31. </el-input>
  32. <span v-else>{{scope.row.address}}</span>
  33. </template>
  34. </el-table-column>
  35. </el-table>
  36. </div>
  37. </template>
  38. <script>
  39. export default {
  40. data() {
  41. return {
  42. // 用一个字符串来保存当前双击的是哪一个单元格
  43. currentCell: null,
  44. tableData: [
  45. {
  46. date: "2016-05-02",
  47. name: "张三",
  48. address: "上海市普陀区金沙江路 1518 弄",
  49. id: 1
  50. },
  51. {
  52. date: "2016-05-02",
  53. name: "李四",
  54. address: "上海市普陀区金沙江路 1518 弄",
  55. id: 2
  56. },
  57. ],
  58. }
  59. },
  60. methods: {
  61. // 给单元格绑定横向和竖向的index,这样就能确定是哪一个单元格
  62. tableCellClassName({row, column, rowIndex, columnIndex}){
  63. row.index=rowIndex;
  64. column.index=columnIndex;
  65. },
  66. // 获得当前双击的单元格的横竖index,然后拼接成一个唯一字符串用于判断,并赋给currentCell
  67. // 拼接后类似这样:"1,0","1,1",
  68. dbclick(row,column) {
  69. this.currentCell = row.index + ',' + column.index;
  70. // 这里必须要setTimeout,因为在点击的时候,input才刚被v-if显示出来,不然拿不到dom
  71. setTimeout(() => {
  72. // 双击后自动获得焦点
  73. this.$refs[row.index + ',' + column.index].focus();
  74. })
  75. },
  76. // 当input失去焦点的时候,隐藏input
  77. hideInput(){
  78. this.currentCell = null;
  79. }
  80. },
  81. }
  82. </script>

四、效果图:

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

闽ICP备14008679号