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

目录

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.mfbz.cn/a/32777.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索嵌入式开发领域:单片机、ARM、Android底层的紧密联系

作为一个曾编写ARM教程和参与Android产品开发的专家&#xff0c;我发现单片机、ARM、嵌入式开发和Android底层开发之间存在紧密的联系。对于那些希望在嵌入式开发领域发展的人来说&#xff0c;了解这些领域的知识至关重要。为了帮助你更好地学习这些内容&#xff0c;我总结了一…

Git指南 - 刚提的commit 怎么找不到了(游离分支)?

在有一次使用git时&#xff0c;我提交commit后&#xff0c;并未push&#xff0c;然后直接切到了当前分支的某个tag&#xff0c;最后我想切回来的时候&#xff0c;竟然找不到我刚才提交commit的节点了… 关联篇 Git指南 - 你该掌握的那些基础认知和首次配置Git指南 - 项目实战中…

青大数据结构【2018】【综合应用】

关键字&#xff1a; 二叉排序树、先序中序排列、平均查找长度ASL、快速排序、堆排序 &#xff08;3&#xff09; 采用堆排序&#xff1b; 因为快速排序在基本有序&#xff08;逆序&#xff09;的情况下&#xff0c;达到最坏的时间复杂度O(n2)。

如何支持研发对CSDN个性化推荐系统重构

目录 大地图工具构建数据治理保持发布重视测试小结引用 一个以内容服务为主的软件&#xff0c;它的推荐系统在数据侧对软件产生着举足轻重的作用。数据的三个方面决定了这个内容软件的档次。 数据的质量好坏数据和用户需求的相关性好坏数据的层次体系好坏 通常&#xff0c;我…

如何使用ChatGPT处理excel

用ChatGPT处理excel&#xff0c;我们需要用到的主要工具是ChatGPT和vba代码。 VBA代码是一种用于Excel&#xff0c;Word&#xff0c;PPT的Microsoft Office软件的编程语言。 可以让用户通过编写一些简单的指令和操作&#xff0c;实现自动化、自定义和数据处理等功能。 就像你编…

2023亚马逊云科技中国峰会之Serverless

序言 Amazon Web Services&#xff0c;是Amazon.com推出的一系列云计算服务。 它提供了一系列的基础设施服务、平台服务和软件服务&#xff0c;希望可以帮助我们更轻松地构建和管理基于云的应用程序。 今天来学习一下 Serverless 本文会介绍以下六个模块&#xff1a; 为什么会…

如何画时序图

10年产品经理教你3步画好UML时序图&#xff0c;轻松掌握流程分析利器【建议收藏】 - 知乎 转自知乎 上次介绍了活动图&#xff0c;这次分享 UML 中&#xff0c;另一种流程分析利器——时序图。 以前每次要分析流程&#xff0c;我都会用活动图。直到有一次&#xff0c;我面对…

使用VuePress生成静态网站并部署到github

目录 第一步 安装VuePress第二步 书写博客第二步 部署到github 第一步 安装VuePress VuePress是一个基于Vue驱动的静态网站生成器 相关资料 文档&#xff1a;https://v1.vuepress.vuejs.org/zh/github: https://github.com/vuejs/vuepressvuepress-deploy: https://github.c…

什么是RabbitMQ?

RabbitMQ是一个由erlang开发的消息队列。消息队列用于应用间的异步协作。 2.RabbitMQ的组件 Message&#xff1a;由消息头和消息体组成。消息体是不透明的&#xff0c;而消息头则由一系列的可选属性组成&#xff0c;这些属性包括routing-key、priority、delivery-mode&#xff…

NoSQL之 Redis 配置与优化

目录 一、关系型数据库与非关系型数据库1.1 关系型数据库&#xff1a;1.2 非关系型数据库1.3 关系型数据库和非关系数据库的区别1.3.1 数据存储方式不同1.3.2 扩展方式不同1.3.3 对事务性的支持不同 1.4 非关系型数据库的产生背景1.5 总结 二、Redis介绍三、 Redis 的优点四、 …

【金融量化】如何筛选基金?

基金的评价与筛选 1 筛选步骤 1.1 股票型基金 &#xff08;1&#xff09;构建备选池 优先考虑股票配置较为稳定的基金&#xff0c;这样才能预估基金未来一段时间的表现&#xff0c;及其对基准股票指数的跟踪情况。因此&#xff0c;首先应该剔除那些仓位变化较大、本身在进行…

Tableau 和 Qlikview哪个更好用?

Tableau 和 Qlikview 是市场上用于分析数据的两种重要的 BI 工具&#xff0c;并配备了广泛的可视化效果。本文将全面概述每个工具&#xff0c;以及基于业务、技术和可视化三个主要类别的基本差异。每个公司都希望用最好的BI工具来处理大量数据。在这篇文章中&#xff0c;我们将…

基于OpenCV-车辆检测项目(简易版)

车辆检测 1.项目介绍2. 读取一段视频3.通过形态学处理识别车辆4.描画轮廓5. 车辆计数并显示 本项目使用的视频地址链接 1.项目介绍 对一个视频进行车辆数量的检测&#xff0c;用到的知识有视频的读取&#xff0c;滤波器&#xff0c;形态学&#xff0c;添加直线、文本&#xff…

实战-基于Jenkins+K8s构建DevOps平台(九)

实验步骤如下&#xff1a; 第一部分&#xff1a;安装持久化存储nfs 1、在k8s-master和k8s-node1上安装nfs服务 [rootk8s-master ~]# yum install nfs-utils -y [rootk8s-master ~]# systemctl start nfs [rootk8s-master ~]# systemctl enable nfs [rootk8s-node1 ~]# yum …

Java 集合继承关系图

Java 容器类库的用途是“保存对象”&#xff0c;并划分为两大类,序列Collection和健值对 Map Collection接口&#xff1a;一个独立元素的序列&#xff0c;衍生的2个子类接口 List接口&#xff1a;存储有序的、可重复的数据 实现类: ArrayList、LinkedList、Vector Set接口&am…

华为MateBook 16 2021款锐龙版R7(CREM-WFD9)(CREM-WFG9)原装出厂Win11系统工厂模式,恢复原厂系统

HUAWEI华为笔记本电脑&#xff0c;MateBook 16 2021款 锐龙版 R7(CREM-WFD9) (CREM-WFG9) 原厂Windows11系统&#xff0c;带F10恢复功能&#xff0c;原装OEM专用系统&#xff0c;恢复出厂状态 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、华为电脑管家等预装程序 …

网络安全自学秘籍

前言 想学网络安全但是无从下手的小白看过来&#xff0c;非常系统的学习资料&#xff0c;无数小白看了这份资料都已经成功入门&#xff0c;涵盖多个网络安全知识点&#xff0c;我愿称之为网络安全自学宝典。 一、概念性知识 1、了解什么是网络安全 2、清楚法律法规 3、网络安…

【git】idea怎么去替换git的地址

git 打开git地址添加或者修改git地址 打开git地址 右击->git->repository->remotes 添加或者修改git地址

useReducer可配合react-redux方案

接下来 我们来看 useReducer 这个属性 配合 react-redux 就会非常好用 那么 我们编写一段这样代码 import React, { useState } from react;const ContDom () > {const [count, setCount] useState(0);return (<div>cont值{ count }<button onClick {()>{ …

【模块三:职业成长】38|能力维度三:如何提升解决跨领域冲突的能力?

你好&#xff0c;我是郭东白。今天我们来讨论架构师核心能力的第三个层次——解决跨领域冲突。 上节课我们讲了从程序员到兼职架构师的跨越&#xff0c;也就是如何搭建解决横向问题的能力。 不过&#xff0c;在兼职架构师这个角色中&#xff0c;架构能力是一个加分项&#xff…