[ant-design-vue] table组件列宽拖拽功能

这篇具有很好参考价值的文章主要介绍了[ant-design-vue] table组件列宽拖拽功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue2.x 拖动table组件列宽功能

环境信息

    "ant-design-vue": "^1.7.1",
    "vue": "^2.6.11",
    "vue-draggable-resizable": "^2.2.0",

相关代码

<template>
    <a-table :columns="columns" :loading="loading" :dataSource="data" :scroll="scroll" :pagination="false" :customRow="customRow" :rowKey="setRowKey" :rowClassName="rowClassName" :components="resizeComp">
    </a-table>
</template>

<script>
import Vue from 'vue';
import VueDraggableResizable from 'vue-draggable-resizable';
// import 'vue-draggable-resizable/dist/VueDraggableResizable.css';
Vue.component('vue-draggable-resizable', VueDraggableResizable);

export default {
    name: "resize-table",
    props: [
        "data",
        "loading",
        "columns",
        "customRow",
        "scroll",
        "rowClassName"
    ],
    data() {
        this.resizeComp = {
            header: {
                cell: (h, props, children) => {
                    const { key, ...restProps } = props;
                    const col = this.columns.find(colItem => {
                        const k = colItem.dataIndex || colItem.key;//列索引
                        return k === key
                    });

                    if (!col || !col.width) {
                        return h('th', { ...restProps }, [...children])
                    }

                    const dragProps = {
                        key: col.dataIndex || col.key,
                        class: 'table-draggable-handle',
                        attrs: {
                            w: 10,
                            x: col.width,
                            z: 1,
                            axis: 'x',
                            draggable: true,
                            resizable: false
                        },
                        on: {
                            dragging: (x, y) => {
                                col.width = Math.max(x, 10);//留出空白
                            }
                        }
                    };
                    restProps.attrs.widh = col.width;
                    const drag = h('vue-draggable-resizable', { ...dragProps });
                    return h('th', { ...restProps, class: 'resize-table-th' }, [...children, drag])
                }
            },
        };
    },
    methods: {
        setRowKey(record, index) {
            return index;
        }
    }
};
</script>

<style lang="less">
.resize-table-th {
    position: relative;
    .table-draggable-handle {
        height: 100% !important;
        bottom: 0;
        left: auto !important;
        right: -5px;
        cursor: col-resize;
        touch-action: none;
        transform: translate(0px, 0px) !important;
        position: absolute;
        top: 0;
    }
}
</style>

原有的样式文件没有使用的必要,个人添加的部分样式内容就符合需求了

vue3.x 拖动table组件列宽功能

环境信息

    "ant-design-vue": "^3.2.13",
    "vue": "^3.2.45",

相关代码

vue3.x对应的ant-design-vue中的table组件本身支持列宽的拖动了,不需求额外的包的支持,根据Api说明设置resizeColumn即可文章来源地址https://www.toymoban.com/news/detail-818416.html

<template>
  <a-table
    :columns="options.columns"
    :loading="options.loading"
    :dataSource="options.data"
    :scroll="options.scroll"
    :customRow="options.customRow"
    :rowKey="options.setRowKey"
    :rowClassName="options.rowClassName"
    :row-selection="options.rowSelection"
    @resizeColumn="handleResizeColumn"
    :bordered="options.bordered"
  >
  </a-table>
</template>
<script lang="ts" setup>
import { ref, reactive } from "vue";

defineProps({
	options: {
		type: Object,
		require: true
	}
})
const handleResizeColumn = (w, col) => {
	col.width = w;
};
</script>

到了这里,关于[ant-design-vue] table组件列宽拖拽功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 按需引入ant-design-vue组件

    一、首先创建一个新的Vue项目 选择default含有babel和eslint。或者自定义Manually select features。 babel是一个转码器,主要用于ES2015+ 代码转换为 JavaScript 向后兼容版本的代码 eslint是一个代码检测工具。用来规范编码规范用。 自定义可选的插件有,Babel,TypeScript,Progressive Web App (P

    2024年02月13日
    浏览(56)
  • vue3+ant design vue+ts实战【ant-design-vue组件库引入】

    🔥🔥更多内容见Ant Design Vue官方文档 🔥点击复习vue3【watch检测/监听】相关内容 👏👏👏一个好项目的编写不仅需要完美的逻辑,以及相应的技术,同时也需要一个 设计规范的高质量UI组件库 。👏👏👏本期文章将会详细讲解 Ant Design of Vue 组件库的 安装、使用、引入 。

    2024年02月02日
    浏览(50)
  • Ant-design-vue AutoComplete 自动补全组件的使用

    AutoComplete 是一个输入框自动完成功能,在输入时提个建议或者辅助提示。 和 Select 的区别是: AutoComplete 是一个带提示的文本输入框,用户可以自由输入,是辅助输入 Select 是在限定的可选项中进行选择,是选择。 使用案例如下: filterOption 是否根据输入项进行

    2024年02月12日
    浏览(48)
  • vue3中使用ant-design-vue的layout组件实现动态导航栏功能(1~2级)

    目录 0 前言 1 准备工作 1.1 安装ant-design-vue 1.2 安装图标组件包 2 选择组件 3 路由文件 4 Vue导航页面 5 最终效果         最近在自己搞一个前后端小项目,前端想使用ant-design-vue的layout组件实现动态导航栏和面包屑,但是网上的资料较少,所以我就自己整合实现了一下,在此

    2024年02月15日
    浏览(46)
  • ant-design-vue在ios使用AUpload组件唤起了相机,HTML的 `capture` 属性

    在使用ant design vue组件的上传组件AUpload的时候有一个问题,直接按照demo写,在ios上会唤起相机,但是实际上我们的需求是弹出选择相册/相机这个弹框。 解决办法是加一个 cupture=\\\"null\\\"这个属性即可 HTML attribute: capture - HTML: HyperText Markup Language | MDN The capture attribute specifies that

    2024年02月12日
    浏览(47)
  • vue element ui table组件列宽可以拖拽调整大小,某一列可以禁止拖拽调整大小

     只需要在 el-table-column 标签中添加 :resizable=\\\"false\\\" 即可   参考链接: https://chat.xutongbao.top/

    2024年01月21日
    浏览(55)
  • html中如何用vue语法,并使用UI组件库 ,html中引入vue+ant-design-vue或者vue+element-plus

    前言 先说一下本次应用的场景,本次项目中,需要引入github中别人写好的插件,插件比较大,没有方法直接在自己项目中,把别人的项目打包合并生成html(类似于前端项目打包生成的 dist ),修改这里面的html,这种情况要么用原生js写或者jquery还相对快一些,那为什么不直

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

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

    2024年02月16日
    浏览(47)
  • 关于 ant-design-vue resetFields 失效

    关于 ant-design-vue resetFields 失效 背景: 遇到这样的问题使用 ant-design-vue useForm 来制作表单的时候, resetFields()失效 场景: 编辑 -赋值 新增 -初始值(问题点:新增的时候他就不 初始化 ) 方案: 1、调用 resetFields() 传参 2、要么使用 reactive 明确定义初始值 解释: 首先我这里讲

    2024年01月17日
    浏览(49)
  • vue2+ant-design-vue a-select组件二次封装(支持单选/多选添加全选/分页(多选跨页选中)/自定义label)

    参数 说明 类型 默认值 v-model 绑定值 boolean / string / number/Array - mode 设置’multiple’\\\'tags’多选 (显示全选) String - optionSource 下拉数据源 Array - width select宽度(可以设置百分比或px) String 100% customLabel 是否自定义设置下拉label String - valueKey 传入的 option 数组中,要作为最终选择

    2024年02月08日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包