VUE之vxe-table高级表格(表格内增删改、导入、导出、自定义打印、列设置隐藏显示等)用法

本文展示了如何在Vue项目中安装和配置VXE-Table,创建带有自定义工具栏、编辑功能的高级表格。通过实例代码详细解析了表格的设置,包括数据加载、编辑模式、列配置和操作按钮等,适合需要进行复杂表格操作的开发者参考。
摘要由CSDN通过智能技术生成

步骤:

1.安装全局依赖:

npm install xe-utils vxe-table@next

2.main.js中注册全局组件:

import 'xe-utils'
import VXETable from 'vxe-table'
import 'vxe-table/lib/style.css'

Vue.use(VXETable)

3.组件中使用方法:
这里举例为高级表格,自定义工具栏名称、图标。

<template>
  <vxe-grid v-bind="gridOptions">
    <template #name_edit="{ row }">
      <vxe-input v-model="row.name" />
    </template>
    <template #nickname_edit="{ row }">
      <vxe-input v-model="row.nickname" />
    </template>
    <template #role_edit="{ row }">
      <vxe-input v-model="row.role" />
    </template>
    <template #address_edit="{ row }">
      <vxe-input v-model="row.address" />
    </template>
  </vxe-grid>
</template>

<script>
export default {
  data() {
    return {
      gridOptions: {
        border: true,
        keepSource: true,
        height: 500,
        printConfig: {},
        importConfig: {},
        exportConfig: {},
        columnConfig: {
          resizable: true
        },
        pagerConfig: {
          perfect: true,
          pageSize: 15
        },
        editConfig: {
          trigger: 'click',
          mode: 'row',
          showStatus: true
        },
        toolbarConfig: {
          buttons: [
            { code: 'insert_actived', name: '新增', status: 'perfect', icon: 'vxe-icon--plus' },
            { code: 'mark_cancel', name: '标记/取消', status: 'perfect', icon: 'fa fa-trash-o' },
            { code: 'save', name: '保存', status: 'perfect', icon: 'fa fa-save' }
          ],
          perfect: true,
          refresh: {
            icon: 'fa vxe-icon--refresh'
            // iconLoading: 'fa vxe-icon--refresh roll'
          },
          import: {
            icon: 'fa vxe-icon--upload'
          },
          export: {
            icon: 'fa vxe-icon--download'
          },
          print: {
            icon: 'fa vxe-icon--print'
          },
          zoom: {
            iconIn: 'fa vxe-icon--zoomin',
            iconOut: 'fa vxe-icon--zoomout'
          },
          custom: {
            icon: 'fa vxe-icon--menu'
          }
        },
        proxyConfig: {
          props: {
            result: 'result',
            total: 'page.total'
          },
          ajax: {
            // 接收 Promise
            query: ({ page }) => {
              return new Promise(resolve => {
                setTimeout(() => {
                  const list = [
                    { id: 10001, name: 'Test1', nickname: 'T1', role: 'Develop', sex: 'Man', age: 28, address: 'Shenzhen' },
                    { id: 10002, name: 'Test2', nickname: 'T2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
                    { id: 10003, name: 'Test3', nickname: 'T3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
                    { id: 10004, name: 'Test4', nickname: 'T4', role: 'Designer', sex: 'Women', age: 23, address: 'Shenzhen' },
                    { id: 10005, name: 'Test5', nickname: 'T5', role: 'Develop', sex: 'Women', age: 30, address: 'Shanghai' },
                    { id: 10006, name: 'Test6', nickname: 'T6', role: 'Designer', sex: 'Women', age: 21, address: 'Shenzhen' },
                    { id: 10007, name: 'Test7', nickname: 'T7', role: 'Test', sex: 'Man', age: 29, address: 'test abc' },
                    { id: 10008, name: 'Test8', nickname: 'T8', role: 'Develop', sex: 'Man', age: 35, address: 'Shenzhen' },
                    { id: 10009, name: 'Test9', nickname: 'T9', role: 'Develop', sex: 'Man', age: 35, address: 'Shenzhen' },
                    { id: 100010, name: 'Test10', nickname: 'T10', role: 'Develop', sex: 'Man', age: 35, address: 'Guangzhou' },
                    { id: 100011, name: 'Test11', nickname: 'T11', role: 'Test', sex: 'Women', age: 26, address: 'test abc' },
                    { id: 100012, name: 'Test12', nickname: 'T12', role: 'Develop', sex: 'Man', age: 34, address: 'Guangzhou' },
                    { id: 100013, name: 'Test13', nickname: 'T13', role: 'Test', sex: 'Women', age: 22, address: 'Shenzhen' }
                  ]
                  resolve({
                    page: {
                      total: list.length
                    },
                    result: list.slice((page.currentPage - 1) * page.pageSize, page.currentPage * page.pageSize)
                  })
                }, 100)
              })
            },
            // body 对象: { removeRecords }
            delete: () => {
              return new Promise(resolve => {
                setTimeout(() => {
                  resolve({})
                }, 100)
              })
            },
            // body 对象: { insertRecords, updateRecords, removeRecords, pendingRecords }
            save: () => {
              return new Promise(resolve => {
                setTimeout(() => {
                  resolve({})
                }, 100)
              })
            }
          }
        },
        columns: [
          { type: 'checkbox', width: 50 },
          { type: 'seq', width: 60 },
          { field: 'name', title: 'Name', editRender: { autofocus: '.vxe-input--inner' }, slots: { edit: 'name_edit' }},
          { field: 'nickname', title: 'Nickname', editRender: {}, slots: { edit: 'nickname_edit' }},
          { field: 'role', title: 'Role', editRender: {}, slots: { edit: 'role_edit' }},
          { field: 'address', title: 'Address', showOverflow: true, editRender: {}, slots: { edit: 'address_edit' }}
        ]
      }
    }
  }
}

</script>

<style>

</style>

效果图:
在这里插入图片描述
vxe-table是一款基于vue的强大table,此次列举部分功能,更多功能有兴趣的朋友可以去探索。
最后附上官方文档:vxe-table v4

vxe-table是一个基于vue表格组件,支持增删查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、模态窗口、自定义模板、灵活的配置项、丰富的扩展插件等... 设计理念: 面向现代浏览器,高效的简洁 API 设计 模块化表格、按需加载、插件化扩展 为单行编辑表格而设计,支持增删查及更多扩展,强大的功能的同时兼具性能 功能: Basic table (基础表格) Grid (高级表格) Size (尺寸) Striped (斑马线条纹) Table with border (带边框) Cell style (单元格样式) Column resizable (宽拖动) Maximum table height (最大高度) Resize height and width (响应式宽高) Fixed column (固定) Grouping table head (表头分组) Highlight row and column (高亮行、) Table sequence (序号) Radio (单选) Checkbox (多选) Sorting (排序) Filter (筛选) Rowspan and colspan (合并行或) Footer summary (表尾合计) Import (导入) Export (导出) Print (打印) Show/Hide column (显示/隐藏) Loading (加载中) Formatted content (格式化内容) Custom template (自定义模板) Context menu(快捷菜单) Virtual Scroller(虚拟滚动) Expandable row (展开行) Pager(分页) Form(表单) Toolbar(工具栏) Tree table (树形表格) Editable CRUD(增删查) Validate(数据校验) Data Proxy(数据代理) Keyboard navigation(键盘导航) Modal window(模态窗口) Charts(图表工具) 更新日志: v4.0.20 table单选框、复选框获取值错误问题 grid 修复 KeepAlive 中报错问题
vxe-table是一个基于Vue.js的开源表格组件库,而vxe-column是vxe-table中的一个配置项,用于定义表格属性和行为。在vxe-column中,可以通过设置type属性为"link"来创建超链接。 超链接可以在表格显示一个可点击的链接,并且可以通过设置相关属性来自定义链接的文本、样式和点击事件。以下是vxe-column超链接的一些常用属性: 1. field:指定数据源中对应的字段名,用于显示超链接的文本。 2. title:设置超链接的标题。 3. linkConfig:配置超链接的相关属性,如链接地址、打开方式等。 4. slots:可以使用插槽来自定义超链接的内容。 下面是一个示例代码,展示了如何在vxe-table中创建一个超链接: ```html <template> <vxe-table :data="tableData"> <vxe-column type="link" field="name" title="姓名" :link-config="linkConfig"></vxe-column> <!-- 其他配置项 --> </vxe-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', url: 'https://www.example.com' }, { name: '李四', url: 'https://www.example.com' }, // 其他数据项 ], linkConfig: { href: 'url', target: '_blank', text: '点击查看' } }; } }; </script> ``` 在上述示例中,通过设置type为"link"的vxe-column,将name字段作为超链接的文本显示。linkConfig对象配置了超链接的相关属性,其中href指定了数据源中对应的字段名,target指定了链接的打开方式,text指定了链接的文本。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫兹/Herzz

如果我的博文帮助到您请打赏支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值