Methodot低代码开发教程——玩转表格增删改查分页

news2024/11/15 10:24:14

目录

1、背景介绍

 2、连接数据源

2.1 新增数据源

2.2 填写数据源信息

3、表格数据的展示

3.1 新增查询,编写查询语句

3.2 使用表格组件

3.3 同步数据源与表格列名

4、表格的数据新增

4.1 新增查询,编写新增语句

4.2 表格配置新增一行,保存事件绑定js函数

4.3 点击新增一行选项,进行测试

5、表格数据的修改与删除

5.1 新增查询,编写修改语句

5.2 配置保存和丢弃事件

5.3 测试下

5.4 删除同理,以下直接提供代码,可自行操作

6、表格数据的份分页

6.1 分享下Methodot低代码这里的分页逻辑

6.2 查看分页查询

6.3 实战演示


1、产品介绍

Methodot是一款面向研发使用的一站式云原生开发及应用托管平台,产品内有大量开箱即用的服务和开发工具,例如:

  • 支持开发团队进行微服务架构设计(例如一个袜子商店管理系统),服务参数以模块的形式传递
配置微服务参数

  •  支持绑定git、镜像、代码进行云原生模式开发及部署

无需额外配置编译环境,大量开箱即用的环境模板,开箱即可云端编码,编码结束后推送git保存

 

  •  支持低代码应用开发,快速开发企业及团队内部工具

  •  大量已安装的中间件等工具,开箱即用

好了,通过上面对表格的一些功能介绍,接下来分享下Methodot低代码里面的Table组件使用技巧,结合看完这个案例,你可以学会:

  • 数据源的使用(本次案例使用的是mysql为例)

  • 表格数据的增加(行更新模式)

  • 表格数据的修改(行更新模式)

  • 表格数据的删除(行更新模式)

  • 表格数据的查询(当然啦)

  • 表格数据的分页(亮点🌟)

话不多说,进入实战环节。

 2、连接数据源

2.1 新增数据源

在Methodot中创建一个新的应用后,选择创建PC端应用

在应用的左侧工具栏的数据源中选择新增,选择mysql

2.2 填写数据源信息

  • 分别填写Mysql数据源的主机、端口、数据库名、用户名和密码(本次案使用的是methodot的云数据库)

Methodot提供一站式开发服务

  • 之后点击右下角的测试,测试无误后,点击保存

  • 案例的sql文件可以点击下载学习
/*
 Navicat Premium Data Transfer

 Source Server         : cloudDB
 Source Server Type    : MySQL
 Source Server Version : 50736
 Source Host           : 933b6ed736ba.c.methodot.com:30962
 Source Schema         : pageplug

 Target Server Type    : MySQL
 Target Server Version : 50736
 File Encoding         : 65001

 Date: 09/06/2023 19:00:32
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
  `power` int(255) NULL DEFAULT NULL COMMENT '力量',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '萧炎', 100);
INSERT INTO `user` VALUES (6, '美杜莎', 99);
INSERT INTO `user` VALUES (7, '薰儿', 99);
INSERT INTO `user` VALUES (8, '海波东', 80);
INSERT INTO `user` VALUES (9, '小医仙', 98);
INSERT INTO `user` VALUES (10, '顾念', 101);
INSERT INTO `user` VALUES (11, '药老', 90);
INSERT INTO `user` VALUES (12, 'pageplug', 99999);
INSERT INTO `user` VALUES (15, '测试3', 3);
INSERT INTO `user` VALUES (16, '测试4', 4);
INSERT INTO `user` VALUES (18, '测试5', 5);
INSERT INTO `user` VALUES (19, '测试6', 6);
INSERT INTO `user` VALUES (20, '测试7', 7);
INSERT INTO `user` VALUES (21, '测试8', 8);
INSERT INTO `user` VALUES (22, '测试9', 9);
INSERT INTO `user` VALUES (23, '测试10', 10);

SET FOREIGN_KEY_CHECKS = 1;

3、表格数据的展示

3.1 新增查询,编写查询语句

  • 我们可以根据绑定的MySQl数据源,新增一个JS查询

  • 编写查询语句,并运行测试

SELECT * FROM user;

3.2 使用表格组件

  • 在左侧的菜单栏中,拖入一个表格组件

  • 并在右侧的数据栏中输入下列代码

{{ getAllUsers.data }}

3.3 同步数据源与表格列名

  • 分别检查每列的属性名与数据的属性名是否一致(一般当你替换数据时就自动同步了)

4、表格的数据新增

4.1 新增查询,编写新增语句

  • ​输入下列代码
NSERT INTO user (username, power) VALUES ( {{ Table1.newRow.username || '' }}, {{ Table1.newRow.power || 0 }} );

4.2 表格配置新增一行,保存事件绑定js函数

  • 在表格配置中,打开“新增一行”

  • 保存事件绑定js函数(记得提前新建个js对象哦)

  • pageHandler的addUser逻辑如下

addUser: () => { //write code here addUser.run().then(() => { showAlert('添加成功', 'success') getAllUsers.run() }).catch(() => { showAlert('添加失败', 'error') }) }

小Tips:

当你新增成功之后还要重新运行getAllUsers查询,刷新表格数据;当你想使用对表格数据进行增删改时,记得配置可以编辑,并选择行更新模式

4.3 点击新增一行选项,进行测试

  • 可以点击表格组件的【新增一行】

1、部分id自增,可以不用写 2、例如填写用户名和潜力之后,可以点击保存按钮; 3、成功时表格数据刷新,可以倒序查看新增数据; 4、也可以放弃此次新增,点击【丢弃】按钮即可;

5、表格数据的修改与删除

5.1 新增查询,编写修改语句

编写修改语句的代码如下:

UPDATE user SET username = {{ Table1.selectedRow.username }}, power = {{ Table1.selectedRow.power }} WHERE id = {{ Table1.selectedRow.id }};

  • 在行更新操作列中配置保存和丢弃事件

5.2 配置保存和丢弃事件

  • 在右侧的行更新中点击设置,我们在onSave中这样配置

  • pageHandler的updateUser逻辑如下,同理,修改之后重新请求数据,刷新表格

updateUser: () => { updateUser.run().then(() => { showAlert('修改成功', 'success') getAllUsers.run() }).catch(() => { showAlert('修改失败', 'error') }) }

5.3 测试下

  • 回到表格组件中,点击这个图标

  • 在输入框输入值了后,回车保存

  • 可以点击右侧的行更新操作,会发现数据表格刷新保存

5.4 删除同理,以下直接提供代码,可自行操作

  • 丢弃事件绑定pageHandler的deleteUser

  • pageHandler的deleteUser逻辑如下

deleteUser: () => { deleteUser.run().then(() => { showAlert('删除成功', 'success') getAllUsers.run() }).catch(() => { showAlert('删除失败', 'error') }) }

删除有点不够优雅,你得选中一行,然后编辑一下,才能点丢弃;当然,你也可以另外使用一个按钮,绑定pageHandler的deleteUser哈,也欢迎有新的想法功能尝试

6、表格数据的份分页

重点重点,接下来说下有点复杂的分页,演示分页之前,先注意两个概念

  • 当前页数(pageNo)

  • 每页大小(pageSize)

6.1 分享下Methodot低代码这里的分页逻辑

  • 先看个简单的例子

SELECT * FROM orders LIMIT 10, 10;

上述查询中,LIMIT 10, 10 表示跳过前 10 条记录,然后返回接下来的 10 条记录,即第 11 到 20 条记录。 用我们的中文理解就是

SELECT * FROM orders LIMIT 跳过行数, 接下来行数

这是简单的分页查询语句。你可能会想,那我这样写:

SELECT * FROM user LIMIT {{ (Table1.pageNo - 1) * Table1.pageSize }}, {{ Table1.pageSize }};

当你想看某一页的数据时,取决于两个值,当前页数(pageNo),每页大小(pageSize),比如每页大小为4,你想看第4~8条数据,你的当前页数(pageNo)为2,即第二页。

那语句是:

SELECT * FROM user LIMIT ((2-1) *4), 4;
  • 那pageNo为什么要减去1?

当你想看第一页时,其实就是:

SELECT * FROM user LIMIT ((0-1) *4), 4;

这里大家都会忽略了一个边界情况,现在假设数据总条数(getAllUsers.data.length)有16条,每页大小为7,那会分成3页:7 7 2,但是如果你使用:

SELECT * FROM user LIMIT {{ (Table1.pageNo - 1) * Table1.pageSize }}, {{ Table1.pageSize }};

当你在第2页,你想翻页时,也就是pageNo变成3时,他就是

SELECT * FROM user LIMIT 14, 7;

也就是想看14条后面的7条数据,但是后面并没有7条数据(只有2条),这样会报错!也就是说,我们需要做个判断:

  • pageSize >= 剩余条数 时(也就是刚刚的情况,pageSize为7,剩余条数为2),那LIMIT的第二个参数就是 剩余条数;

  • pageSize < 剩余条数 时(比如pageSize为7,剩余条数为9),那LIMIT的第二个参数就是 pageSize;

总结一下,我们用个三元表达式判断,也就是:

SELECT * FROM user LIMIT 跳过行数, (pageSize >= (总数-跳过行数)) ? (总数-跳过行数) : pageSize ;

剩余行数 = 总数-跳过行数 所以,接下来写法你应该就更懂了,只是长而已,逻辑并不复杂~

SELECT * FROM user LIMIT {{ (Table1.pageNo - 1) * Table1.pageSize }}, {{ Table1.pageSize >= (getAllUsers.data.length - ((Table1.pageNo - 1) * Table1.pageSize)) ? getAllUsers.data.length - ((Table1.pageNo - 1) * Table1.pageSize) : Table1.pageSize }};

当然,有问题欢迎继续社群里面补充

6.2 查看分页查询

  • 先新建个分页查询

分页查询的代码如下:

SELECT * FROM user LIMIT {{ (Table1.pageNo - 1) * Table1.pageSize }}, {{ Table1.pageSize >= (getAllUsers.data.length - ((Table1.pageNo - 1) * Table1.pageSize)) ? getAllUsers.data.length - ((Table1.pageNo - 1) * Table1.pageSize) : Table1.pageSize }};

6.3 实战演示

小tips:

  • 表格数据用分页查询的数据

  • 表格配置开启服务端分页

  • 总行数使用数据总条数

  • 翻页事件(onPageChange)和改变每页大小事件(onPageSizeChange)需要绑定js函数(执行getPagingData查询

  • 修改下表格数据

{{ getPagingData.data }}

  • 当你对表格数据进行增删改时,都得执行getPagingData查询,刷新表格数据~

做完上述操作以后,当你拉动表格高度或者翻页时,你就会看到自己的杰作啦~Methodot低代码里的表格组件你就玩转啦

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

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

相关文章

华为云专家出品《从零到一•Python图像处理入门》电子书

《华为云云享.书库》系列电子书来啦&#xff01; 本系列电子书旨在帮助开发者成长&#xff0c;汇聚华为云内外部专家技术精华制作而成。 本书《从零到一•Python图像处理》是该系列电子书第3部。 我们在华为开发者即将到来之际&#xff0c;开放电子书免费下载。 点击下方链接…

JVM探究

JVM探究 请谈谈你对JVM的理解&#xff1f;java8虚拟机和之前的变化、更新&#xff1f;什么是OOM&#xff0c;栈溢出StackOverFlowError&#xff1f;怎么分析&#xff1f;JVM的常用调优参数有哪些&#xff1f;内存快照如何 抓取&#xff0c;怎么分析Dump文件&#xff1f;知道吗…

Unity VR开发教程 OpenXR+XR Interaction Toolkit(八)手指触控 Poke Interaction

文章目录 &#x1f4d5;教程说明&#x1f4d5;XR Poke Interactor&#x1f4d5;与 UI 进行触控交互⭐添加 Tracked Device Graphic Raycaster 和 XR UI Input Module 让 UI 可被交互 &#x1f4d5;与物体进行交互⭐XR Simple Interactable⭐XR Poke Filter 往期回顾&#xff1a…

【Linux进程】进程的基本概念 {PCB结构体,进程表,Linux中的task_struct,查看进程,获取进程PID,使用fork创建子进程}

一、进程的基本概念 1.1 什么是进程&#xff1f; 进程是计算机中正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位。每个进程都有自己的内存空间、代码、数据和执行状态。进程可以独立运行&#xff0c;相互之间不会干扰。操作系统可以同时运行多个进程&#…

vue表格实现一个简单的合并单元格功能

用的是vue2ant-design-vue 但是vue3或者element-ui也是同理 先上效果 需要后端的数据将相同id的放在一起 否则也会有问题 例如&#xff1a; this.list [{id: 1,name: 舟山接收站,...}{id: 2,name: 舟山接收站碳中和LNG,...},{id: 2,name: 舟山接收站碳中和LNG,...} ]// th…

Redis7【⑤ Redis 发布 订阅】

Redis发布和订阅 本章了解即可&#xff0c;命令可以不用敲。 Redis 发布和订阅&#xff08;Publish/Subscribe&#xff0c;简称 Pub/Sub&#xff09;是一种消息传递模式&#xff0c;用于在 Redis 中实现消息的发布和订阅。 在 Redis 中&#xff0c;发布者&#xff08;Publi…

maven打包所有依赖,对外提供sdk.jar

maven打包所有依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compile.source>1.8</maven.compile.source><maven.compile.target>1.8</maven.compile.target></properties><…

Swin Transformer训练报错问题

1. 训练遇到报错问题 &#xff08;1&#xff09;mportError: cannot import name _pil_interp from timm.data.transforms 原因&#xff1a; timm.data.transforms里面没有_pil_interp&#xff0c;只有str_to_pil_interp、_str_to_pil_interpolation、_pil_interpolation_to_s…

rancher 节点重启无感发布

这里设置 时间 为120s &#xff0c;保证 新节点起来后&#xff0c;和 老节点并行2分钟后再剔除&#xff0c;老节点

el-select修改样式

目录 准备 修改placeholder颜色 修改右侧箭头 修改圆角边框 准备 <el-select v-model"goodsId" clearable placeholder"请选择" :popper-append-to-body"false"><el-option v-for"item in kindList" :key"item.value…

浙江宇视科技 网络视频录像机 ISC LogReport.php 远程命令执行漏洞

免责声明 文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得危害网络安全&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机…

Vue Router activated deactivated 路由守卫

6.12.activated deactivated activated和deactivated是路由组件所独有的两个钩子&#xff0c;用于捕获路由组件的激活状态具体使用 activated路由组件被激活时触发deactivated路由组件失活时触发 src/pages/News.vue <template><ul><li :style"{opacity}…

1.2-程序设计语言与流程图基础

一、学习目标 了解计算机程序与程序设计语言。认识算法和流程图。理解计算机程序、程序设计语言、算法与流程图之间的关系。 1、计算机程序 计算机程序是人们使用指定的程序设计语言&#xff0c;根据需要事先编写的一系列控制计算机工作的命令。2、程序设计语言 程序设计语…

如何避免死锁:方法一

需要先看前文&#xff1a;死锁的产生_御坂美琴1的博客-CSDN博客 对两个资源使用一把锁。即小朋友玩敲鼓的时候会同时拿走鼓和鼓槌。 如图&#xff1a; 可以看到“线程1执行了&#xff0c;但是线程2没有执行&#xff0c;还在被阻塞着。为什么线程1运行完毕&#xff0c;线程2还没…

解决sourcetree中推送不显示分支 - 软件篇

问题&#xff1a; 如上图所示&#xff0c;在我们使用sourcetree推送我们的代码时 推送的弹窗里不回显示我们的分支&#xff1b; 众所周知&#xff1a;在我们没有新创建分支的情况下&#xff0c;他会默认有一个master分支&#xff0c;这也是我们的主分支 在网上搜这个问题&…

61 KVM Skylark虚拟机混部-使用及最佳实践

文章目录 61 KVM Skylark虚拟机混部-使用及最佳实践61.1 使用Skylark61.1.1 启动服务61.1.2 创建虚拟机61.1.3 虚拟机运行 61.2 最佳实践61.2.1 虚拟机业务推荐61.2.2 虚拟机绑核配置 61 KVM Skylark虚拟机混部-使用及最佳实践 61.1 使用Skylark 61.1.1 启动服务 初次启动&a…

Spring MVC的工作原理

1.Spring MVC的工作原理 1.浏览器发送请求&#xff0c;DispatcherServlet拦截请求 2.DispatcherServlet将需要先调用HandlerMapping通过uri找到能够处理请求的Handler&#xff0c;然后将请求涉及到的Handler封装 3.DispatcherServlet调用HandlerAdapter适配执行Handler 4.H…

LeetCode 打卡day45-- 单词拆分和多重背包问题

一个人的朝圣 — LeetCode打卡第45天 知识总结 Leetcode 139. 单词拆分题目说明代码说明 知识总结 今天写了一道题目, 但是还挺难的, 而且是面试高频题目 还过了一遍多重背包问题. 多重背包与01背包的区别在于多重背包限制了物品的个数, 某些物品的个数可能不为1, 可以使用两…

Java缓存简介

一、缓存 1、什么是缓存&#xff1f; 缓存是硬件&#xff0c;是CPU中的组件&#xff0c;CPU存取数据的速度非常的快&#xff0c;一秒钟能够存取、处理十亿条指令和数据&#xff08;术语&#xff1a;CPU主频1G&#xff09;&#xff0c;而内存就慢很多&#xff0c;快的内存能够达…

数据库实验-图书销售管理系统数据库安全管理

一、实验二&#xff1a;图书销售管理系统数据库安全管理 三、实验目的 了解该DBMS系统对数据库管理的内容与方法&#xff0c;特别是理解数据库安全机制和作用&#xff0c;以及PostgreSQL数据库角色管理、用户管理、权限管理的基本方法&#xff0c;培养数据库管理能力。在图书…