Vue+Element ui动态表格 实现表头自适应宽度

这篇具有很好参考价值的文章主要介绍了Vue+Element ui动态表格 实现表头自适应宽度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

根据业务需求,工作中会出现表头信息不固定,根据后台返回数据,我们要实现动态表格的实现

1. tableData为表格数据,tableHeader为表头数据。

<el-table :data="tableData" border style="width: 100%" v-loading="loading">
  <el-table-column 
     :render-header="readerColumn" 
      v-for="item in tableHeader" 
      :key="item.id" 
      :prop="item.javasName" 
      :label="item.sourceColMame" 
      align="center" 
      show-overflow-tooltip />
</el-table>

2. 实现表头自适应宽度(二种方法)

    ① 第一种通过动态width来定义,通过表头数据的遍历,将label的表头信息传入方法中

        el-table-column 添加 :width="columnCount(xxxx)"

const columnCount = (label) => {
  let labelLong = label.length // 获取标题字数的长度
  if(labelLong < 3) {  //标题字数3个以下的宽度设为一致,或可依产品再修改
    labelLong = 3
  }
  let size = 28 // 定义一个标尺
  let labelWidth = labelLong * size // 最终宽度
  return labelWidth
}

效果如下:

element动态表格,Vue,vue.js,前端,javascript

    ② 第二种通过element-ui的table-column提供的render-header对标题进行render渲染。

这个地方值得注意的是:由于这个地方要使用h函数,如果你使用的是vue2搭配element ui,可以通过第一个参数传入h函数;如果使用的是vue3搭配elelment-plus,由于该版本去除了h函数的引入,我们需要从外部进行引入使用

element ui

element动态表格,Vue,vue.js,前端,javascript

element plus

element动态表格,Vue,vue.js,前端,javascript

<script lang="ts" setup>
import { yibaoBF } from '@/api/HospitalInformation/yibaobofu'
import { xinxiApi } from '@/api/HospitalInformation/Information';
import { h,ref,onMounted,getCurrentInstance} from 'vue'
import { ElMessage } from 'element-plus'

const { proxy } = getCurrentInstance()

// 定义自定义表头
const readerColumn = ({ column }) => {
  let labelLong = column.label.length // 表头label长度
  if(column.label.length < 3) {
    labelLong = 3
  }
  let size = 30 // 根据需求定义一个字体的标尺
  column.minWidth = labelLong * size
  //@ts-ignore
  return h('div',{style: { width: '100%!important' }},[column.label])
}

这个地方我采用的vue3的模式,可以通过引入h函数渲染。

如果产品又出了一些其他需求,如添加标题添加单选框等,都可以通过h函数渲染实现。文章来源地址https://www.toymoban.com/news/detail-617183.html

到了这里,关于Vue+Element ui动态表格 实现表头自适应宽度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包