保姆级低代码实战教程——玩转PagePlug表格开发,增删改查分页如此简单

目录

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 分享下PagePlug这里的分页逻辑

6.2 查看分页查询

6.3 实战演示


1、背景介绍

推荐你使用下以React为技术栈的低代码PagePlug,也支持ANTD5;这款低代码和市面上的其他低代码区别很大的,相较于轻流、简道云、轻宜搭、微搭、帆软、活字格等等,这类面向业务人群使用的低代码(不需要研发人员操作的编写的,我更愿意称之为无代码),产品功能都是高度标准化的,也能够满足各类型的需求和业务,但有个问题:

这类低代码工具开发的应用迭代难度很大,无法满足企业和部门后续的长尾需求;而PagePlug面向研发人群使用,后续应用的迭代、维护,灵活性更好

现在高阶版本也融合了Chatgpt的功能,日常代码开发量更减少了30%——40%

AI直接生成相应的代码
AI直接生成相应的代码

回归正题,其实日常表格(Table)组件适用于展示结构化数据

常见的使用场景有:

  • 例如管理后台:展示用户、商品、订单等数据,支持增删改查等操作。

  • 例如仪表盘:展示关键业务指标,支持排序、过滤等交互。

  • 数据展示:将数据库或API返回的结构化数据以表格形式展示给用户,支持搜索、过滤、分页等交互操作。

日常表格(Table)组件的主要功能点有:

  • 列配置:可以配置列的宽度、标题、是否可见等。支持拖拽改变列的顺序。

  • 行配置:可以设置行的高度、是否可选择等。

  • 过滤、排序、分页:可以对表格数据进行过滤、排序和分页展示。

  • 单选/多选:支持单行选择或多行选择。

  • 行详情:可以展开行以显示更多详情。

  • 行操作:每行可以配置操作按钮,如编辑或删除等。

  • 自定义渲染:可以自定义渲染列的单元格,实现复杂的交互和展示效果。

PagePlug的表格(Table)组件,数据的处理都可以通过Javascript来处理,灵活性能满足更多的需求

​除此之外在性能方面,PagePlug的表格(Table)组件有以下优势:

  • 虚拟滚动:可以渲染大量数据而不影响性能,通过虚拟滚动只渲染可视区域的数据。

  • 缓存:会缓存和重用DOM元素和组件实例,避免重复创建和销毁,提高渲染性能。

  • 分页:可以通过分页只加载和渲染当前页的数据,避免一次性加载全部数据。

  • 懒加载:行展开和加载更多数据时使用懒加载,只在需要时加载数据,避免过早加载大量数据。

  • 固定列:可以固定左侧或右侧的列,其余列滚动时固定列保持不动,实现更好的用户体验。

真正意义上的低代码

将传统上需要编码的工作转化为非编码的活动,再结合需求补充代码,后续的迭代维护更便捷

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

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

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

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

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

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

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

示例demo在github、gitee仓库的demo文件夹中有,可自行下载导入

  • PagePlug:面向研发使用,更快更全的低代码 -gitee

  • PagePlug:面向研发使用,更快更全的低代码 -github

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

2、连接数据源

2.1 新增数据源

在PagePlug中创建一个新的应用后,在左侧工具栏的数据源中选择新增,选择mysql

2.2 填写数据源信息

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

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

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 分享下PagePlug这里的分页逻辑

  • 先看个简单的例子

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查询,刷新表格数据~

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


对PagePlug上一些功能使用讲解及介绍,可以点击下方文章查看

1、Formily开发实战——3分钟完成一个登录页的开发,Formily表单与PagePlug低代码的完美融合

Formily开发实战——3分钟完成一个登录页的开发,Formily表单与PagePlug低代码的完美融合_PagePlug的博客-CSDN博客Formily——更高效的表单解决方案与开源低代码Pageplug的融合https://blog.csdn.net/AppsmithCN/article/details/130765565?spm=1001.2014.3001.5501

2、PagePlug入门教程—10分钟搭建一个用户改查系统

PagePlug入门教程—10分钟搭建一个用户改查系统_PagePlug的博客-CSDN博客PagePlug入,面向研发使用的低代码,10分钟搭建一个用户改查系统https://blog.csdn.net/AppsmithCN/article/details/131790256

3、B站上也有一些案例教程,欢迎查看研究~~

​欢迎点赞、收藏、喜欢三连鼓励下哟 ,避免找不到文章啦

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

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

相关文章

chatgpt-web发布之docker打包流程

docker打包流程 1、使用docker前置准备&#xff1a; 电脑下载docker桌面版&#xff0c;以及开启虚拟机步骤&#xff1a;https://blog.csdn.net/qq_34905631/article/details/126573826下载docker桌面版 &#xff1a;https://docs.docker.com/desktop/install/windows-install…

(001)我们一起学Python;基本运算

&#xff08;一&#xff09;将 Python 当做计算器 ①除法 (/)永远返回一个浮点数。 floor 除法可以使用 // 运算符得到整数结果&#xff08;丢掉任何小数部分&#xff09;&#xff1b;要计算余数你可以使用 % PS:Python的命令行交互工具IDLE可以将文本打印&#xff0c;快捷键…

Day22——HTML

文章目录 HTML一、 关于 html 那些事1. 为什么要学 html&#xff1f;2. 什么是 html&#xff1f;3. 发展史4. 优势5. W3C 标准6. 学习 html 要达到的方法和目标7. 第一个 HTML 案例 二、HTML 的基础知识1. HTML 的基本结构1.1 HTML 头部元素1.1.1 title 标签1.1.2 base 标签1.1…

二流公司前端,月入账工资3万元「web前端薪资如何?」

一个好的 Web 前端年薪会有多少? 作为一名普通员工来说的话,比较好的公司会给什么待遇呢? 匿名用户 昨天发的工资,匿了,二流互联网公司前端。 2013年底的行情 拿了一年了。 update 2017年拿了半年了… 这次不算奖金了 每月到手的。 罗龙浩支付宝口碑前端负责人 2012…

(006)我们一起学Python;列表----超级结构体

if else d的匹配在C和Python上是完全不同的&#xff0c;Python依靠对其匹配&#xff0c;而C是就近匹配。所以Python有更好的可读性和代码更优美简洁。 条件表达式&#xff08;三元操作符&#xff09; 根据判断条件&#xff0c;来进行赋值操作 assert这个关键字 我们称之为断言…

java之JVM学习全过程学习记录

关注公众号&#xff1a;”奇叔码技术“ 回复&#xff1a;“java面试题大全”或者“java面试题” 即可免费领取资料 java之JVM学习记录其中有许多借鉴综合&#xff0c;感谢通哥也感谢大佬们&#xff0c;一起学习加油&#xff09; 关注公众号&#xff1a;”奇叔码技术“ 1、J…

linux 1060显卡,Steam最受欢迎显卡型号出炉,GTX 1060 依然是王道!

原标题&#xff1a;Steam最受欢迎显卡型号出炉&#xff0c;GTX 1060 依然是王道&#xff01; 2019年7月Steam 硬件和软件调查报告。 作为一名忠实游戏玩家 除了好玩的游戏作品外 基本还会关心硬件配置等 不知道大家的游戏配置 一般多久升级一次 通哥的1060倒是真的战斗蛮久了 近…

通过javasocket实现客户端与客户端的联系

首先建立两个文件夹Client_1跟Server_1的文件夹 CloseUtil.java是关闭流class&#xff0c;当我们的输入流跟输出流以及端口出问题以及不想要时&#xff0c;可以通哥这个class实现关闭&#xff0c;client跟server两个都是一样的 Server_1 首先是server.java 其次是Mychannel.j…

对话华为云专家,摆脱无意义“内卷”

本期推荐&#xff1a;【云享人物大咖面对面】华为云首席产品官方国伟独家专访&#xff1a;当下云发展有待突破的并不是技术问题&#xff1b;现在为什么是#华为云# 的最佳时机&#xff1b;以不变应万变&#xff0c;什么是云产品规划的三个关键出发点&#xff1b;生态对于云的意义…

Could not create connection to database server.

bug日记&#xff1a;Could not create connection to database server. 网上查了很多博客&#xff0c;指出了两个方向 yml(yaml)里面数据库的配置问题mysql-connector-java 的版本号问题 结合我的报错&#xff0c;项目一测试登录&#xff0c;就报错这个&#xff0c;而且错误…

eclipse 根据路径文件名定位文件

前言 以前用ctrlshiftr 根据文件名正则匹配文件&#xff0c;能够很快定位到具体的文件。 后来我遇到了恩 类似于如下图这样&#xff08;习惯起相同文件名的队友&#xff09; 解决办法 苦搜网上无果&#xff0c;本来心思开发个eclipse插件&#xff0c;后来插入一个项目要带领…

OAuth2 的授权流程

文章目录 &#x1f4d6; OAuth2 的授权流程&#x1f4d1; 参与的角色&#x1f4d1; 授权流程&#x1f4d1; 授权许可 Authorization Grant&#x1f4d1; 直白话 OAuth2 流程 &#x1f4d6; OAuth2 的授权流程 &#x1f4d1; 参与的角色 1️⃣ Resource Owner资源所有者&#…

k8s --> 19 k8s集群down机

文章目录 一、master节点1、在masster节点操作 二、故障排查1、查看6443&#xff08;api-server&#xff09;2、检查docker和kubelet服务3、查看日志4、登录master机器5、故障处理 一、master节点 1、在masster节点操作 kubectl get node kubectl get 报错&#xff1a;Unab…

CCS_3200编译错误汇总一(通)

CC3200编译错误汇总 1CC3200提示编译器版本不对 解决办法&#xff1a;官网去下载最新版本的编译器&#xff0c;官网的结构可能会改变&#xff0c;但是找到 Compiler下载相关的就能够找到&#xff0c;这个办法可能不是万能&#xff0c;多换几个编译器编译试 一下。 在Project-…

田渊栋:关于GPT-4的一些感想

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 重磅干货&#xff0c;第一时间送 来自&#xff1a;新智元 作者&#xff1a;田渊栋 编辑&#xff1a;桃子 【导读】对于研究者们而言&#xff0c;GPT-4的出现意味着什么呢&#xff1f; OpenAI昨天发布了GPT-4&#xf…

网络错误 请确保您已连接到网络并重试

windows2008从windows2003网络拷贝总提示:网络错误 请确保您已连接到网络并重试 处理办法&#xff1a; 运行 gpedit.msc&#xff0c;对组策略--计算机配置--windows设置--安全设置--本地策略--安全选项 中的 “网络安全&#xff1a;LAN管理器身份验证级别”项的值“没有定义”…

chrome连接已重置_如何重置(或调整)Chrome的下载设置

chrome连接已重置 By default, Chrome saves all downloaded files to the same location—a dedicated “Downloads” folder. The thing is, this isn’t always practical for all types of download files. The good news is you can easily tweak this setting. 默认情况下…

用友t1系统服务器连接失败,登录T1时服务器连接失败,请重新确认是怎么回事?...

可以重新再建一个新账套吗&#xff1f;&#xff1f;&#xff1f; 可以重新再建一个新账套吗&#xff1f;&#xff1f;&#xff1f;[] 您好&#xff0c;软件未限制账套的个数&#xff0c;您可以在建立账套的服务社区李珊:怎么建立&#xff1f;&#xff1f;铧霖钢材经营部:您打开…

LoadRunner提问求助 失败: “[10054] 对等端已重置连接” [MsgId: MERR-27780] 是什么

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

“已成功与服务器建立连接,但是在登录过程中发生错误“的解决方法

对于上述问题&#xff0c;我也曾被折磨得不轻。 网上找了很多方法&#xff0c;很多就是每个屁用&#xff01; 别轻易就重新注册一个新的&#xff0c;否则后面可能还需要花时间去把它删了。 首先&#xff0c;我们会看到连接成功但是登陆不上的报错图。 电脑不同&#xff0c;可…