vue3 el-table点击行展开并expand列隐藏(可编辑)

 el-table代码如下:

<el-table
            border
            :data="tableinfo.data"
            width="100%"
            height="100%"
            :fit="true"
            ref="tableRef"
            :header-cell-style="{ 'text-align': 'center' }"
            :cell-style="{ 'text-align': 'center' }"
            @row-click="clickTable"
            row-key="ID"
          >
            <el-table-column type="index" width="50" label="序号" />
            <el-table-column prop="FieldName" label="字段名" />
            <el-table-column prop="Showlabel" label="显示名" />
            <el-table-column prop="Seq" label="排序" width="100">
              <template #default="scope">
                <el-input
                  @click.stop=""
                  v-model="scope.row.Seq"
                  type="text"
                  clearable
                ></el-input>
              </template>
            </el-table-column>
            <el-table-column prop="IsshowInTalbe" label="显示" width="100">
              <template #default="scope">
                <el-switch
                  @click.stop=""
                  inline-prompt
                  v-model="scope.row.IsshowInTalbe"
                  active-text="是"
                  inactive-text="否"
                />
              </template>
            </el-table-column>
            <el-table-column type="expand" width="1" class-name="detailShow">
              <template #default="props">
                <ul class="expand-form">
                  <li>
                    <span class="title">显示名:</span>
                    <span class="content">
                      <el-input
                        @click.stop=""
                        v-model="props.row.Showlabel"
                        type="text"
                        clearable
                      ></el-input>
                    </span>
                  </li> 
                </ul>
              </template>
        </el-table-column>
</el-table>

展开列加:class-name="detailShow";

方法如下:

const tableRef = ref<InstanceType<typeof ElTable>>(); //表标识
const clickTable = (row, index, e) => {
  tableRef.value.toggleRowExpansion(row);
};

toggleRowExpansion(row)这样写无需用true和false,单击展开与闭合;

样式如下:

/deep/.detailShow {
  display: none;
}

注意:加/deep/,不然无效;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用`el-table`的`expand-row-keys`属性来实现展开,并在展开中再嵌套一个`el-table`来实现嵌套表格的效果。具体实现步骤如下: 1. 在父组件中引入`el-table`和需要展示的子组件。 ``` <template> <el-table :data="tableData" :expand-row-keys="expandRowKeys"> <!-- 父表格的 --> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column type="expand"> <!-- 展开中嵌套的子表格 --> <child-table></child-table> </el-table-column> </el-table> </template> <script> import ChildTable from './ChildTable.vue' export default { components: { ChildTable }, data() { return { tableData: [{ name: '张三', age: 18 }, { name: '李四', age: 20 }], expandRowKeys: [] } } } </script> ``` 2. 在子组件`ChildTable`中也使用`el-table`来展示数据。 ``` <template> <el-table :data="tableData"> <el-table-column prop="subject" label="科目"></el-table-column> <el-table-column prop="score" label="分数"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [{ subject: '语文', score: 90 }, { subject: '数学', score: 85 }] } } } </script> ``` 3. 在父组件中监听展开的事件,并记录展开的`key`值,用于判断哪些需要展开子表格。 ``` <template> <el-table :data="tableData" :expand-row-keys="expandRowKeys" @expand-change="handleExpandChange"> <!-- 父表格的 --> </el-table> </template> <script> import ChildTable from './ChildTable.vue' export default { components: { ChildTable }, data() { return { tableData: [{ name: '张三', age: 18 }, { name: '李四', age: 20 }], expandRowKeys: [] } }, methods: { handleExpandChange(row, expandedRows) { // 获取展开的key值 const keys = expandedRows.map(row => row.key) // 更新展开的key值 this.expandRowKeys = keys } } } </script> ``` 这样就可以实现在`el-table`中展开,并在展开中嵌套另一个`el-table`来展示子数据的效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值