elTable表头和表身分离的其他方法

你可以使用此方法获取elTable单独的表头 或者 表身 ,实现自己的个人操作。也可以在极端情况下(实现表头固定,表身滚动的官方方法失效情况下),在表身加入el-scrollor实现表身滚动。

  <el-table :data="[]" style="width: 99%">
              <el-table-column label="订单类型" header-align="center" />
              <el-table-column label="金额" header-align="center" />
              <el-table-column label="用户" header-align="center" />
              <el-table-column label="时间" header-align="center" />
            </el-table>
           
        <el-table :data="tableData" border stripe :show-header="false" style="width: 99%">
                <el-table-column prop="type" />
                <el-table-column prop="price" />
                <el-table-column prop="unitname" />
                <el-table-column prop="payTime" />
              </el-table>
           

CSS

:deep(.el-table__empty-block) {
  display: none !important; //把暂无数据的显示给去掉
}

评论区有人提问:当你要做复选的时候 你的表头因为没有数据所以是禁用?

扩展下问题:表头表身分离如何做到表头选择和表身全选同步,就是点下表头的选择框,表身全部勾选或全不勾选

HTML

<el-table :data="[1]" style="width: 99%" class="headerTable" @select-all="AllSelected"     ref="headerTable">
<!--将data设置为非空数组和添加选择列使表头出现选择框,这样的话就会出现一个表身,可以在css中把表身隐藏-->
              <el-table-column type="selection" width="55" />
              <el-table-column label="订单类型" />
              <el-table-column label="金额" />
              <el-table-column label="用户" />
              <el-table-column label="时间" width="150" />
            </el-table>
          
<el-table :data="tableData" border stripe :show-header="false" style="width: 99%" ref="tableChild" @selection-change="handleSelectionChange">
              <el-table-column type="selection" width="55" />
              <el-table-column prop="type" />
              <el-table-column prop="price">
                <template #default="scope"> ¥{{ scope.row.price }} </template>
              </el-table-column>
              <el-table-column prop="unitname" />
              <el-table-column prop="payTime" :formatter="formatter" width="150" />
</el-table>

JavaScript

   const tableChild = ref();
    const headerTable = ref();
    const AllSelected = (selection: any) => {
      tableChild.value!.toggleAllSelection(); //全选和反选切换
    };
    const handleSelectionChange = (val: any) => {
      console.log(val); //选中的数据
      if (val.length === tableData.value.length) {//如果表身勾选满了,就把表头勾选上
        headerTable.value!.toggleRowSelection(headerTable.value.data[0], true); 
      } else {
        headerTable.value!.clearSelection(); 
      }
    };

CSS

:deep(.el-table__empty-block) {
  display: none !important;
}
.headerTable :deep(.el-table__body-wrapper) {
  display: none;
}

演示

 

代码可能有错误,如有问题或者建议  , 请在下方评论留言

2022/12/7 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值