vxe-table+vue2 键盘导航 快捷键实现(复杂表格)

本文介绍了如何在vxe-table这个Vue2组件中实现复杂的表格操作,包括键盘导航、默认选中、单元格编辑、下拉容器交互和回车键功能。通过设置`keyboard-config`和`edit-config`来定制用户交互体验。
摘要由CSDN通过智能技术生成

vxe-table+vue2 键盘导航 快捷键实现编辑表格(复杂表格)

vxe-table官网地址

可实现功能

  1. 支持进入页面选中表格,进入页面即可操作上下键,选中行。
  2. 支持vxe-table通过上下键切换选中。
  3. 支持进入页面默认选中数据第一行,选中首个input框。
  4. 支持双回车(单回车)激活可编辑的单元格。
  5. 支持下拉容器表格使用页码/滚动条获取数据。
  6. 支持下拉容器输入框获取焦点查询数据。
  7. 支持回车键自动跳转到下一个单元格。
  8. 跳转到单元格时,若此单元格有下拉容器,默认展开。

默认选中第一行第三列

回车默认展开下拉容器

表格vue源码

  <vxe-table
          ref="vxeTable"
          align="center"
          border
          :data="data"
          :row-config="{ isHover: true, isCurrent: true }"
          :keyboard-config="{
            isArrow: true,
            isEnter: true,
            enterToTab: true,
            isEdit: true,
          }"
          :mouse-config="{ selected: true }"
          :edit-config="{ trigger: 'click', mode: 'cell', showIcon: false }"
          @cell-selected="cellSelected"
        >

vxe元素上主要参数

//vxe元素上主要参数
	    :row-config="{ isHover: true, isCurrent: true }"// 行配置信息 
	    :keyboard-config="{
            isArrow: true,// 开启方向键功能
            isEnter: true,// 开启回车键功能
            enterToTab: true,// 是否将回车键行为改成 Tab 键行为
            isEdit: true,// 开启任意键进入编辑(功能键除外)
          }"
         :mouse-config="{ selected: true }"// 鼠标配置项  开启单元格选中功能
         // 可编辑配置项  触发方式   编辑模式 是否显示icon
         :edit-config="{ trigger: 'click', mode: 'cell', showIcon: false }"
         

vxe元素上主要方法

//vxe元素上主要方法
	     @cell-selected="cellSelected"

关键Api

        foucs() //获取表格焦点
        setCurrentRow(this.data[0]) //进入页面默认选中列表第一行
        getColumns()//获取列表可视的列
        setEditCell();// 激活单元格
        getCurrentRecord();// 获取高亮行

进入页面默认激活选中某行某列

	mounted() {
    this.$nextTick(() => {
      // console.log("keyboard-navigate测试数据:", data);
      this.$refs.vxeTable.focus(); // 获取data表格焦点
      this.$refs.vxeTable.setCurrentRow(this.data[0]); // 默认选中第一行
      const column = this.$refs.vxeTable.getColumns(); // 获取表格的可视的列
      this.$refs.vxeTable.setEditCell(this.data[0], column[3]); // 激活第一行,第四列的输入框
    });
  },

回车选中当前单元格 激活当前单元格

    // 选中当前单元格  激活当前单元格
    cellSelected({ $event, $table, rowIndex, columnIndex }) {
    //rowIndex, columnIndex 当选选中行和列的index
      const {
        editStore: { selected },
      } = $table;
      /* 回车激活 */
      if (selected.row && selected.column && $event.keyCode == 25) {
        $table.setEditCell(selected.row, selected.column);
      }
      /* 选中表格最后一个单元格 */
      if (rowIndex == this.tableData.length - 1 && columnIndex == 20) {
        //回车到表格最后一个单元格可做操作
      }
    },
  },

获取高亮行

  // 获取高亮行
    getCurrentEvent() {
      console.log(
        "获取高亮行",
        JSON.stringify(this.$refs.xTable.getCurrentRecord())
      );
    },
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3中使用vxe-table和TypeScript进行国际化的步骤如下: 1. 首先,安装vxe-tablevue-i18n依赖: ```shell npm install vxe-table vue-i18n ``` 2. 在Vue的入口文件(通常是main.ts)中,引入vxe-tablevue-i18n,并进行相关配置: ```typescript import { createApp } from 'vue'; import App from './App.vue'; import XEUtils from 'xe-utils'; import VXETable from 'vxe-table'; import 'vxe-table/lib/style.css'; import { createI18n } from 'vue-i18n'; // 导入vxe-table的国际化语言包 import zhCN from 'vxe-table/lib/locale/lang/zh-CN'; import enUS from 'vxe-table/lib/locale/lang/en-US'; // 创建vue-i18n实例 const i18n = createI18n({ locale: 'zh-CN', // 设置默认语言 messages: { 'zh-CN': zhCN, 'en-US': enUS } }); // 使用vxe-table const app = createApp(App); app.use(VXETable); app.use(i18n); app.mount('#app'); ``` 3. 在组件中使用vxe-table的国际化功能,可以通过`$t`方法来获取对应的翻译文本: ```html <template> <div> <vxe-table :data="tableData"> <vxe-table-column type="index" title="序号"></vxe-table-column> <vxe-table-column field="name" title="姓名"></vxe-table-column> <vxe-table-column field="age" title="年龄"></vxe-table-column> </vxe-table> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 20 }, { name: '李四', age: 25 }, { name: '王五', age: 30 } ] }; } }; </script> ``` 4. 在组件中使用vue-i18n的国际化功能,可以通过`$t`方法来获取对应的翻译文本: ```html <template> <div> <p>{{ $t('message.greeting') }}</p> </div> </template> <script> export default { mounted() { console.log(this.$t('message.greeting')); } }; </script> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值