实现element-ui中table点击一行展开

在运用element-ui的表格展开行组件时,默认的是点击左边的小箭头才能展开,但是实际的需求却是点击一整行展开,实现方法如下:

<el-table
                        :data="entdatas"
                        style="width: 100%" row-key="id" :expand-row-keys="entexpands" @row-click="rowExpand">
                  <el-table-column type="expand">
                    <template scope="props">
                      <el-form label-position="left" inline class="demo-table-expand">
                        <el-form-item label="名称:">
                          <span style="cursor:pointer;color:#4AA6FF;" @click="_goEntDetail(props.row.ENTNAME)">{{props.row.ENTNAME}}</span>
                        </el-form-item>
                        <el-form-item label="类型:">
                          <span>{{props.row.ENTTYPE}}</span>
                        </el-form-item>
                        <el-form-item label="状态:">
                          <span>{{props.row.ENTSTATUS}}</span>
                        </el-form-item>
                        <el-form-item label="日期:">
                          <span>{{props.row.ESDATE}}</span>
                        </el-form-item>
                      </el-form>
                    </template>
                  </el-table-column>
                  <el-table-column
                          label="名称"
                          prop="ENTNAME">
                  </el-table-column>
                  <el-table-column
                          label="状态"
                          prop="ENTSTATUS">
                  </el-table-column>
                  <el-table-column
                          label="日期"
                          prop="ESDATE">
                  </el-table-column>
                </el-table>

export default {
  data() {
       return {
           entdatas:[],  
           entexpands: []
       }
 },
rowExpand(row, event, column) {
     Array.prototype.remove = function (val) {
         let index = this.indexOf(val);
         if (index > -1) {
             this.splice(index, 1);
         }
     };
     if (this.entexpands.indexOf(row.id) < 0) {
         this.entexpands= [];
         row.id = this.generateUUID();
         this.entexpands.push(row.id);
     } else {
         this.entexpands.remove(row.id);
     }
 },
 其中我们是把行id作为唯一标识,但是有时候我们的数据中并没有唯一标识,所以可以采用以下方法生成唯一标识:
 generateUUID() {
   var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
    });
    return uuid;
},
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Element UI,要展开`el-table`表格的,你可以使用`expand-row-keys`属性来控制展开。首先,你需要在表格的数据添加一个属性用于标识是否展开,比如命名为`expanded`。然后,在`el-table`组件上添加`expand-row-keys`属性,并将其绑定到一个数组,用于存储展开的唯一标识。最后,在表格的列配置,使用`scoped-slot`来自定义展开的内容。 下面是一个示例代码: ```html <template> <el-table :data="tableData" :expand-row-keys="expandedRows" @expand-change="handleExpandChange" > <!-- 自定义展开内容 --> <template v-slot="{ row }"> <el-form :inline="true"> <el-form-item label="姓名"> {{ row.name }} </el-form-item> <el-form-item label="年龄"> {{ row.age }} </el-form-item> <!-- 其他表单项 --> </el-form> </template> <!-- 表格列配置 --> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <!-- 其他列配置 --> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, expanded: false }, { name: '李四', age: 20, expanded: false }, // 其他数据 ], expandedRows: [] // 存储展开的唯一标识 }; }, methods: { handleExpandChange(row, expanded) { // 当展开变化时更新expandedRows数组 if (expanded) { this.expandedRows.push(row); // 将展开添加到数组 } else { const index = this.expandedRows.findIndex(item => item === row); if (index > -1) { this.expandedRows.splice(index, 1); // 从数组移除收起的 } } } } }; </script> ``` 这是一个基本的示例,你可以根据你的实际需求自定义展开内容和其他列配置。请注意,你需要根据实际情况修改表格数据和列配置的属性名。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值