使用arco design实现动态列信息的表格

目录

1.说明

2.普通表格的实现

3.动态表格的实现


1.说明

在前端画面中,表格一般用来展示列表数据,并且可以实现分页,应用很广泛,关于表格的列信息,一般是固定的,也可以是变化的,根据后端传递的数据及列信息进行动态展示,本文使用的是arco design前端框架,大家可以参考一下

2.普通表格的实现

arco design中表格的基本用法:需要传递 columnsdata

data是要展示的列表信息,columns是要展示的列信息。当显示的列信息是固定时,可以在画面中定义列信息数组,在数组中的对象中可以设置列的标题(title),列和data中的对应关系(dataIndex),会将dataIndex中的内容和data中对象的key进行匹配,一致时则显示数据,还是设置列宽,插槽名等。

<template><a-table :columns="columns" :data="data" />
</template><script>
import { reactive } from 'vue';export default {setup() {const columns = [{title: 'Name',dataIndex: 'name',},{title: 'Salary',dataIndex: 'salary',},{title: 'Address',dataIndex: 'address',},{title: 'Email',dataIndex: 'email',},];const data = reactive([{key: '1',name: 'Jane Doe',salary: 23000,address: '32 Park Road, London',email: 'jane.doe@example.com'}, {key: '2',name: 'Alisa Ross',salary: 25000,address: '35 Park Road, London',email: 'alisa.ross@example.com'}, {key: '3',name: 'Kevin Sandra',salary: 22000,address: '31 Park Road, London',email: 'kevin.sandra@example.com'}, {key: '4',name: 'Ed Hellen',salary: 17000,address: '42 Park Road, London',email: 'ed.hellen@example.com'}, {key: '5',name: 'William Smith',salary: 27000,address: '62 Park Road, London',email: 'william.smith@example.com'}]);return {columns,data}},
}
</script>

3.动态表格的实现

动态列表的实现也比较简单,只需要从后端设置好data和columns的内容,前端获取到信息后,将对应的信息设置到data及columns中进行显示。

例如用户有自定义显示列信息的需要。

实现方式1

前端:

template

        <a-table :data="tableData" style="margin-top: 10px" :columns="tableCol"row-key="id" :row-selection="rowSelection" v-model:selectedKeys="selectedKeys":loading="loading":virtual-list-props="{height:600}":scroll="{x:2000}":pagination="false"><template #index="{ rowIndex }">{{ rowIndex + 1 }}</template><template #operations="{ record }"><a-space :size="5"><a-button size="small" @click="edit(record)" status="success" v-if="openType == '2002'">修改</a-button></a-space></template></a-table>

js:

获取后端返回的列信息,添加序号及操作列。将后端返回的数据直接设置给表格关联的数据

    const res = await getNurseryFbk(reqbody)// 后端返回的列信息colData.value = res.column// 表格中的列信息,多了序号及操作列tableCol.value = res.columntableCol.value.unshift({title: "No",dataIndex: "no",colType: "",colList: [],fixed: 'left',slotName: "index",width: 100})tableCol.value.push({title: "Optional",dataIndex: "optional",colType: "",colList: [],slotName: "operations",width: 200})tableData.value = res.data

后端:

data:后端首先获取要显示的列信息,根据列信息拼接查询sql,我使用map集合接收查询结果,如下:

   List<Map<String, Object>> getList(@Param("sql") String sql);

注意使用map集合接收数据时map的key是表中字段的id,最好在拼接sql语句时将查询语句中的表中的字段全部统一为小写。

columns:列集合中的每条数据为要显示的列信息,比如titile的设置,dataIndex的设置(需要设置为表中字段的小写,和data中key一致),列宽的设置,插槽名的设置等等。

这样就可以完成数据的动态展示

注意:dataIndex的内容不能为空,为空时表格渲染会出现问题

实现方式2

        <a-table :data="tableData" style="margin-top: 10px"row-key="id" :row-selection="rowSelection" v-model:selectedKeys="selectedKeys":scroll="{y:500}":loading="loading":pagination="{current: pagination.offset,pageSize: pagination.limit,total: pagination.total,showTotal: true,showJumper: true,showPageSize: true,pageSizeOptions:[5000,10000,15000,20000,25000,30000]}"@page-change="onPageChange"@page-size-change="onPageSizeChange"><template #columns><a-table-column :title="item.title" v-for="(item,index) in tableCol" :key="index" :width="item.width":fixed="item.fixed" :tooltip="item.tooltip" :ellipsis="item.ellipsis"><template #cell="{record, rowIndex}"><div v-if="item.title == 'No'">{{ rowIndex + 1 + (pagination.offset - 1) * pagination.limit }}</div><div v-if="item.colType == '2'"><a-select v-model="record[item.dataIndex]" :disabled="true"><a-option v-for="optionItem of item.colList" :value="optionItem.valueId":label="optionItem.listValue"></a-option></a-select></div><div v-if="item.colType != '2'">{{ record[item.dataIndex] }}</div><div v-if="item.title == 'Optional'"><a-space><a-button size="small" @click="edit(record)" status="success">修改</a-button><a-popconfirm content="确定进行删除吗?" @ok="delInfo(record)"><a-button size="small" status="warning">删除</a-button></a-popconfirm></a-space></div></template></a-table-column></template></a-table>

 前端列信息,也可以使用插槽的方式进行自定义,循环列信息,根据不同的列类型,可以使用输入框或者下拉选择器进行显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/843431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂 javascript 函数返回值

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 JavaScript 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 这篇文章…

怎么提取pdf格式中的英语单词

思路&#xff1a; 第一步&#xff1a;适用python把需要导出的pdf文件单词导出到txt 第二步&#xff1a;把导出的txt导入到软件单词库&#xff0c;例如&#xff0c;金山词霸等软件内 第三步&#xff1a;熟练掌握以及删除单词库部分单词&#xff0c;达到对英文标准的单词记忆&…

0528-算法岗面试题

多模态 CLIP原理 描述对比学习函数 BLIP BLIP2架构和区别 LLaVa和BLIP2区别 LLaVa两阶段的训练过程和数据集的构建 LLaVa1.5 1.6的改进 cross-attention和self-attention区别 cross-attention在图文匹配中q和kv分别指什么&#xff0c;在机器翻译中分别指什么 one shot&#xf…

okcc呼叫中心如何创建语音群呼(通知)功能?

要在OKCC呼叫中心系统中创建语音群呼&#xff08;通知&#xff09;功能&#xff0c;您可以按照以下步骤进行&#xff1a; 准备语音通知内容&#xff1a; 确定您想要发送的语音通知内容&#xff0c;包括文字内容和语音录音。 配置群呼功能&#xff1a; 在OKCC呼叫中心系统的管理…

【Linux】-Kafka集群安装部署[18]

简介 Apache Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。 同RabbitMQ一样&#xff0c;Kafka也是消息队列。不过RabbitMQ多用于后端系统&#xff0c;因其更加专注于消息的延迟和容错。 Kafka多用于大数据体系&#xff0c;因其更加专注于数据的…

Oracle数据库之事务(十四)

在Oracle数据库中&#xff0c;事务是工作的逻辑单元&#xff0c;用于确保数据的一致性和完整性。以下是对Oracle事务的详细解释&#xff1a; 1. 定义 事务&#xff1a;在数据库中&#xff0c;事务是由一个或多个SQL语句组成的逻辑单元&#xff0c;这些语句共同完成一组相关的…

K210 数字识别 笔记

一、烧写固件 连接k210开发板&#xff0c;点开烧录固件工具&#xff0c;选中固件&#xff0c;并下载 二、模型训练 网站&#xff1a;MaixHub 1、上传文件 2、开始标记数据 添加9个标签&#xff0c;命名为1~9&#xff0c;按键盘w开始标记&#xff0c;键盘D可以下一张图片&…

解密Prompt系列15. LLM Agent之数据库应用设计:DIN C3 SQL-Palm BIRD

上一章我们主要讲搜索引擎和LLM的应用设计&#xff0c;这一章我们来唠唠大模型和DB数据库之间的交互方案。有很多数据平台已经接入&#xff0c;可以先去玩玩再来看下面的实现方案&#xff0c;推荐 [sql translate]&#xff1a;简单&#xff0c;文本到SQL&#xff0c;SQL到文本…

Github 2024-05-21 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目2C项目2TypeScript项目2非开发语言项目2Vim Script项目1Lua项目1Python项目1Batchfile项目1Go项目1Windows和Office激活工具 创建周期:…

<网络安全VIP>第一篇《工业互联网安全》

1 工业互联网介绍 工业互联网的网络是基础&#xff0c;平台是核心&#xff0c;安全是保障。信息化会提高工业化的生产效率&#xff0c;但信息化本身具备两面性。一方面它可以让信息交互更加顺畅&#xff0c;共享更加快捷&#xff1b;但另一方面是带来相应的安全威胁。 2 工业…

后端企业级开发之yaml数据序列化格式文件详解2024

yaml格式 数据格式 yaml 是一种数据序列化的格式 容易阅读 容易与脚本语言交互 以数据为核心 重数据轻格式 我们要知道他怎么书写 大小写敏感 属性层级关系使用多行描述 每行结尾使用冒号结束 使用缩进表示层级关系 同层级左侧对其 只运行使用空格 属性前面添加空格 #表…

学习前端滚动容器

学习前端滚动容器 一、前言1、创建基本的滚动容器组件2、解析代码 二、示例应用1、使用滚动容器组件2、创建滚动容器组件结语 一、前言 滚动容器是指在页面布局中可以垂直或水平滚动其内容的区域。这种技术通常用于处理内容过长而导致溢出的情况&#xff0c;例如长表单、大段文…

面试二十六、c++语言级别的多线程编程

一、 多线程编程 ​​​​​ 这里的c语言级别的多线程和linux的有一定的区别&#xff0c;c语言级别提供的多线程比较严格&#xff0c;如果主线程结束了&#xff0c;但是子线程没有结束&#xff0c;进程就会异常终止&#xff0c;而linux不会&#xff0c;会继续执行。 二、模拟卖…

Window VScode配置Conda教程(成功版)

VScode配置Conda 参考博文&#xff1a;https://blog.csdn.net/qq_51831335/article/details/126757014Anaconda安装&#xff08;注意勾选自动配置环境变量&#xff01;&#xff09; 官网&#xff1a;https://www.anaconda.com/download/success VScode配置 python插件安装安装 …

关于Java程序入口args参数

关于Java程序入口args参数 我们都知道一个java工程会有一个主程序入口&#xff0c;即我们常见到的如下代码 public static void main(String[] args) {// 中间程序 }但是很多人可能都不知道主程序入口中的String[] args后面的args会有怎么样一个使用场景呢&#xff1f; 其实在…

爬虫逆向实例小记——某数据知识管理网站-DES-ECB模式

aHR0cHM6Ly9rZC5uc2ZjLmNuL2ZpbmFsUHJvamVjdEluaXQ 注意&#xff1a;本文是逆向部分比较少&#xff0c;主要为了流程走通&#xff0c;限于代码搬运工。 第一步:分析页面 此网站经过请求响应&#xff0c;可以看出响应内容为加密内容。 第二步&#xff1a;判断加密类型 在XHR …

java.lang.NumberFormatException: For input string:

创建SpringBoot&#xff0c;Mybatis的项目时候&#xff0c;Service层调用Mapper层时候爆出了一个错误 发现报错是一个类型转换错误&#xff0c;经过排查后发现是因为mapper接收的实体类中没有写空参构造

Redis 中 List 数据结构详解

目录 List 用法 1. 增 2. 删 3. 查 内部编码 应用场景 前言 Redis 中的 List 和 Set 数据结构各有特点&#xff0c;适用于不同的应用场景。List 提供了有序的列表结构&#xff0c;适合用于消息队列和任务列表等场景&#xff1b;Set 提供了无序且不重复的集合结构&#…

Redis常用命令——Hash篇

前面我们讲述了String的相关操作命令。本篇文章主要讲解Redis中数据结构Hash的相关操作命令。希望会对你有所帮助。 目录 一、Hash哈希 二、命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX HINCRBY 和 HINCRBYFLOAT 三、小结 &#x1f64b;‍♂️ 作者&a…

React 供应商选择组件 - 使用Ant Design渲染Select并与父组件Form同步数据

1、安装Ant Design的相关依赖&#xff1a; npm install antd ant-design/icons2、编写SupplierSelect组件的代码如下&#xff1a; import React, { useEffect, useState } from react; import { Select } from antd; import axios from axios;const { Option } Select;const…