Vue 3 中 Ant Design Vue 如何自定义表格 Table 的表头(列头)内容?

这篇具有很好参考价值的文章主要介绍了Vue 3 中 Ant Design Vue 如何自定义表格 Table 的表头(列头)内容?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.使用场景

项目用到的是 Ant Design Vue (2.2.8) 组件库,开发中遇到一个如下图的表格,有些表头文本后面会有一些自定义图标,鼠标移入图标时显示对应的审批时间提示。当前列如果没有审批时间就会隐藏图标,只展示列头文本。
vue获取table的表头的标题,ant-design-vue,vue.js,javascript,前端

2.解决方案

使用 Ant Design Vue 基础的 Table 组件是无法满足这个场景的,所以需要自定义表头的内容,这里就要用到定义表格列时的一个属性—— slots:{title: '自定义表头插槽名'},再结合模板<template>在表格中创建的插槽内容实现。组合使用方式见如下代码:(title 要和模板中插槽名一致)

<template>
	<a-table
	  :columns="columns"
	  :data-source="dataSource"
	>
	 <template #myColumnHead>
	    <span>我是自定义列头</span>
	  </template>
	</a-table>
</template>
<script setup>
	import { ref } from 'vue'
	const columns = ref([{
	    dataIndex: '',
	    key: '',
	    slots: {
	      title: 'myColumnHead'
	    },
	}])
</script>

表格列 columns 的配置描述:
title:列头显示文字 string|slot
dataIndex:列数据在表格列表 dataSource 数据项中对应的 key,支持 a.b.c 的嵌套写法 string
key: Vue 需要的 key string
slots :使用 columns 时,可以通过该属性配置支持 slot 的属性,可支持列头自定义内容插槽、当前列单元格内容自定义插槽……,如 slots: { filterIcon: ‘XXX’} object
当前要用到的就是 slots:{title: '自定义表头插槽名'} 属性,来自定义列头内容。更多配置项见官网。

项目代码如下:

const columns = ref([
  {
    title: '商品名称',
    dataIndex: 'commodityName',
    key: 'commodityName',
    width: 100
  },
  {
    title: '型号',
    dataIndex: 'commodityModel',
    key: 'commodityModel',
    width: 180
  },
  {
    title: '申请数量',
    dataIndex: 'applyCount',
    key: 'applyCount',
    width: 100
  },
  {
    title: '申请价格',
    dataIndex: 'applyPrice',
    key: 'applyPrice',
    width: 100
  },
  // 以下列都需要自定义列头内容
  {
    dataIndex: 'priceOffBusNode',
    key: 'priceOffBusNode',
    slots: {
      // 办事处业务
      title: 'priceOffBusNodeTit'
      // customRender: 'priceOffBusNode'
    },
    width: 120
  },
  {
    dataIndex: 'priceOffDirNode',
    key: 'priceOffDirNode',
    slots: {
      // 办事处主任
      title: 'priceOffDirNodeTit'
      // customRender: 'priceOffDirNode'
    },
    width: 120
  },
  {
    dataIndex: 'priceProOrgNode',
    key: 'priceProOrgNode',
    slots: {
      // 销售公司工程部部长
      title: 'priceProOrgNodeTit'
      // customRender: 'priceProOrgNode'
    },
    width: 160
  },
  {
    dataIndex: 'priceSaleManNode',
    key: 'priceSaleManNode',
    slots: {
      // 销售公司总经理
      title: 'priceSaleManNodeTit'
      // customRender: 'priceSaleManNode'
    },
    width: 120
  }
])

<template>模板中:

<a-table
  :columns="columns"
  :data-source="dataSource"
  bordered
  :loading="false"
  :pagination="false"
  :rowKey="record => record.key"
  size="small"
>
  <template #priceOffBusNodeTit>
    <span>办事处业务</span>
    <a-tooltip v-if="priceOffBusNodeTime" placement="top">
      <template #title>
        <span>{{ priceOffBusNodeTime }}</span>
      </template>
      <svgIcon iconKey="detailTip" class="icon" />
    </a-tooltip>
  </template>

  <template #priceOffDirNodeTit>
    <span>办事处主任</span>
    <a-tooltip v-if="priceOffDirNodeTime" :defaultVisible="false" placement="top">
      <template #title>
        <span>{{ priceOffDirNodeTime }}</span>
      </template>
      <svgIcon iconKey="detailTip" class="icon" />
    </a-tooltip>
  </template>

  <template #priceProOrgNodeTit>
    <span>销售公司工程部部长</span>
    <a-tooltip v-if="priceProOrgNodeTime" :defaultVisible="false" placement="top">
      <template #title>
        <span>{{ priceProOrgNodeTime }}</span>
      </template>
      <svgIcon iconKey="detailTip" class="icon" />
    </a-tooltip>
  </template>

  <template #priceSaleManNodeTit>
    <span>销售公司总经理</span>
    <a-tooltip v-if="priceSaleManNodeTime" :defaultVisible="false" placement="top">
      <template #title>
        <span>{{ priceSaleManNodeTime }}</span>
      </template>
      <svgIcon iconKey="detailTip" class="icon" />
    </a-tooltip>
  </template>
</a-table>

注:上面有用到 Ant design vue 的文本提示组件 <a-tooltip>,需要注意定义的列 columns 中的 slot 的 title 值要和插槽名一致即可;自定义列头同时也能自定义当前列的单元格内容,如上面代码注释掉的 customRender 属性,同理也是要结合同名插槽使用,在插槽里自定义 html 内容即可,这个可参考官网示例。
上面项目代码中,列表数据 dataSource 如下:

const dataSource = ref([
  {
    applyCount: 10,
    applyPrice: 200,
    commodityModel: '空调',
    commodityName: '空调',
    priceOffBusNode: '张三',
    priceOffBusNodeTime: '2022-11-11 10:00:00',
    priceOffDirNode: '张三',
    priceOffDirNodeTime: '2022-11-11 10:00:00',
    priceProOrgNode: '张三',
    priceProOrgNodeTime: '2022-11-11 10:00:00',
    priceSaleManNode: '张三',
    priceSaleManNodeTime: '2022-11-11 10:00:00',
  }
])

效果图:
vue获取table的表头的标题,ant-design-vue,vue.js,javascript,前端
注:我用的 Ant Design Vue 版本是 2.2.8,即使版本不同,其实配置项及方法也都差不多,按照上面相同处理即可。文章来源地址https://www.toymoban.com/news/detail-568139.html

到了这里,关于Vue 3 中 Ant Design Vue 如何自定义表格 Table 的表头(列头)内容?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ant-design-vue的table表格行合并和列合并

    ant-design-vue的table表格行合并和列合并

    场景说明: 1、列合并:需要在表格最后一列进行合并,如图: 思路:相当于是第二列的最后一栏(colSpan )占比5列,第2列后面的4列最后一行(colSpan )占比0。 代码示例 行合并需求如图:将指定列的多行合并成一行 思路:和合并列差不多;第一列的第一行和第二行要合并

    2024年02月16日
    浏览(10)
  • 保姆级教程:Ant Design Vue中 a-table 嵌套子表格

    保姆级教程:Ant Design Vue中 a-table 嵌套子表格

    前端为Ant Design Vue 版本为1.6.2,使用的是vue2 Ant Design Vue中 a-table 嵌套子表格,说的可能稍微墨迹了点,不过重点内容都说的比较详细,利于新人理解,高手可以自取完整代码 下图为官网图,会在每行最前面多一个加号,点击后会展开,看到子表格的数据 子格嵌套从代码层简

    2024年02月01日
    浏览(10)
  • Ant Design Vue 中将 Table 表格中的数字类型转换为文字的方法详解

    在使用 Ant Design Vue 开发时,有时需要将 Table 表格中的数字类型字段转换为对应的文字表示,以提供更直观的数据展示。本文将详细介绍在 Ant Design Vue 中将 Table 表格中的数字类型转换为文字的方法,帮助您灵活地处理数据展示需求。 在实际的应用中,我们经常会遇到需要将

    2024年02月11日
    浏览(8)
  • vue3 组合式 ant.design组件Table嵌套表格,从后端获取数据并动态渲染

    在根据官方文档使用ant.design中的嵌套表格时,发现官方文档很多地方都不够详细。在过程中踩了不少坑,例如: 子表如何获取父表的数据? 如何获取子表的行索引? 如何让子表的数据源来自父表该行的数据? 总之,最后还是磕磕绊绊做完了功能,于是第一时间把代码整理

    2024年02月15日
    浏览(14)
  • vue+Element UI Table表格动态渲染表头内容及操作按钮

    循环表格头信息数组 封装操作组件并引入表格文件内 配置表头信息数组及添加操作事件

    2024年02月13日
    浏览(38)
  • VUE el-table设置表格表头居中,内容列居中/左对齐/右对齐

    VUE el-table设置表格表头居中,内容列居中/左对齐/右对齐

    1、 统一设置设置表头居中 加上【:header-cell-style=\\\"{\\\'text-align\\\':\\\'center\\\'}\\\"】 统一设置设置内容列居中 加上【:cell-style=\\\"{\\\'text-align\\\':\\\'center\\\'}\\\"】 2、 在每个el-table-column标签上边设置    align=\\\"center \\\"

    2024年02月17日
    浏览(39)
  • Ant Design Vue 修改表格头部样式

    Ant Design Vue 修改表格头部样式

    在网上搜了好多修改表格头部样式的,最后自己摸索出来,分享给大家,最后附上完整代码。 首先用到的是 customHeaderRow 这个API,类型是一个函数 此图是 console.log(conlumn); 打印出来的 可以看到每一列都有一个className

    2024年02月11日
    浏览(12)
  • Ant Design Vue的table组件高度自适应问题

    Ant Design Vue的table组件高度自适应问题

    今天在编写公司项目的时候碰到ant design vue的table组件高度没办法自适应的问题,会出现如下页面情况。  最终尝试的解决方案只能通过监听浏览器窗口变化实现自适应 (1)给表格的srcoll定义一个动态接收参数,方便后面数据增加动态改变滚动高度。  (2)vue3项目中就直接

    2024年02月16日
    浏览(12)
  • [ant-design-vue] table组件列宽拖拽功能

    原有的样式文件没有使用的必要,个人添加的部分样式内容就符合需求了 vue3.x对应的ant-design-vue中的table组件本身支持列宽的拖动了,不需求额外的包的支持,根据Api说明设置resizeColumn即可

    2024年01月23日
    浏览(10)
  • Ant Design Vue实现表格双击编辑、添加新行、文字提示

    Ant Design Vue实现表格双击编辑、添加新行、文字提示

    早上刚上班,产品就朝我工位走了过来,一看大事不好,肯定又是来提需求的! 产品:做一个表格,要实现双击编辑的功能 我:做不了 产品:老板提的 我:好的,可以做 老板提的不能做也滴做😂 申明:项目基于Vue+Ant Design实现 想要实现双击编辑单元格,先开发一个简单的

    2024年02月11日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包