开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 216|回复: 4
打印 上一主题 下一主题
收起左侧

[已解决] exui 虚表问题

 关闭 [复制链接]
结帖率:86% (42/49)
跳转到指定楼层
楼主
发表于 2025-3-28 22:14:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式   四川省*
13精币
下滑下载数据的时候,窗口感觉很卡,上滑一点都不卡,但是内容显示到窗口后,上滑一次,再下滑就不卡了,求大佬帮忙优化一下看看
111.e (1.44 MB, 下载次数: 0)
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
颜色组整数型6 
角标整数型  
image1整数型  
随机按钮标题色逻辑型  
总项目数整数型  
数据缓存文本型0 
预加载数量整数型  
Control_Sl整数型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
n整数型 
当前项目数整数型 
i整数型 
Title字节集 
表头角标整数型 
index整数型 
懒加载逻辑型 
sql语句文本型 
记录集整数型 
数据库记录总数长整数型 
全_mysql句柄 = 连接MySql (“127.0.0.1”, “root”, “123123”, “123”, 3306)
如果 (全_mysql句柄 = 0)
信息框 (“数据库连接失败!”, 0, , )
返回 ()


执行SQL语句 (全_mysql句柄, “set names GBK”)
Control_Sl = 组件取窗口绑定组件 (超级列表框EX1.取窗口句柄 ())
组件暂停重画 (Control_Sl)
' cha询jizhang_account表的记录总数,使用AS指定别名
sql语句 = “SELECT COUNT(*) AS record_count FROM jizhang_account”
如果 (执行SQL语句 (全_mysql句柄, sql语句))
信息框 (“cha询记录总数失败!”, 0, , )
返回 ()


记录集 = 取记录集 (全_mysql句柄)
如果 (记录集 = 0)
信息框 (“获取记录集失败!”, 0, , )
返回 ()


到首行 (记录集)
读字段值 (记录集, “record_count”, 数据库记录总数)
释放记录集 (记录集)
总项目数 = 数据库记录总数
' 预加载数据到缓存
预加载数据 ()
' 设置虚表回调
如果 (到整数 (&虚表回调) = 0)
信息框 (“虚表回调函数指针获取失败!”, 0, , )
返回 ()


组件发送消息 (Control_Sl, #组件接口命令_启用虚表, 到整数 (&虚表回调), 0, 0, 0)
' 设置滚动回调实现懒加载
懒加载 = 真
如果 (懒加载)
如果 (到整数 (&滚动回调) = 0)
信息框 (“滚动回调函数指针获取失败!”, 0, , )
返回 ()


组件发送消息 (Control_Sl, #组件接口命令_置内容滚动回调, 到整数 (&滚动回调), 0, 0, 0)
' 先插入10个
超级列表框EX1.插入项目 (-1, 10, 0, 30)
' 一次插入总项目数量
超级列表框EX1.插入项目 (-1, 10, 0, 30)
' 之后不需要设置项目数据 当项目需要显示时 会调用虚表回调 来装填数据
组件容许重画 (Control_Sl)
子程序名返回值类型公开备 注
预加载数据  
变量名类 型静态数组备 注
sql语句文本型 
记录集整数型 
i整数型 
编号文本型 
金额文本型 
备注文本型 
支fu类型文本型 
项目文本型 
时间文本型 
支fuID文本型 
sql语句 = “SELECT ja.acid, ja.acmoney, ja.actime, ja.acremark, ja.zhifu, jc.classname, jp.proname FROM jizhang_account ja JOIN jizhang_program jp ON ja.proid = jp.proid JOIN jizhang_account_class jc ON ja.zhifu = jc.classid JOIN jizhang_bank jb ON ja.bankid = jb.bankid order by acid desc LIMIT ”到文本 (预加载数量)
如果 (执行SQL语句 (全_mysql句柄, sql语句))
信息框 (“预加载数据cha询失败!”, 0, , )
返回 ()


记录集 = 取记录集 (全_mysql句柄)
如果 (记录集 = 0)
信息框 (“预加载数据获取记录集失败!”, 0, , )
返回 ()


i = 0
判断循环首 (到下一行 (记录集))
读字段值 (记录集, “acid”, 编号)
读字段值 (记录集, “acmoney”, 金额)
读字段值 (记录集, “actime”, 时间)
读字段值 (记录集, “acremark”, 备注)
读字段值 (记录集, “zhifu”, 支fuID)
读字段值 (记录集, “classname”, 支fu类型)
读字段值 (记录集, “proname”, 项目)
数据缓存 [i + 1] = 编号 + “|” + 金额 + “|” + 时间 + “|” + 备注 + “|” + 支fuID + “|” + 支fu类型 + “|” + 项目
i = i + 1
判断循环尾 ()
释放记录集 (记录集)
子程序名返回值类型公开备 注
滚动回调整数型 
参数名类 型参考可空数组备 注
组件句柄 
消息目前只有659
参数1横滚动条位置
参数2纵滚动条位置
参数3暂时无效
参数4类型 0无效 1纵滚动条 2横滚动条 3横纵滚动条
变量名类 型静态数组备 注
现有项目数整数型 
可插入数量整数型 
i整数型 
判断 (消息 = 659)
如果真 (参数4 = 2)
返回 (0)
现有项目数 = 超级列表框EX1.取项目数量 ()
可插入数量 = 总项目数 - 现有项目数
如果真 (现有项目数 > 0 可插入数量 > 0)
如果真 (参数2 > 组件发送消息 (组件句柄, 12593, 0, 0, 0, 0)组件发送消息 (组件句柄, 12595, 0, 0, 0, 0) × 1.1)
如果 (可插入数量 > 10)
超级列表框EX1.插入项目 (-1, 10, 0, 30)
超级列表框EX1.插入项目 (-1, 可插入数量, 0, 30)
' 插入新项目后,通知虚表回调更新数据
计次循环首 (可插入数量, i)
组件发送消息 (Control_Sl, #组件接口命令_置虚表项目更新模式, 现有项目数 + i - 1, 0, 0, 0)
计次循环尾 ()




返回 (0)
子程序名返回值类型公开备 注
虚表回调整数型 
参数名类 型参考可空数组备 注
组件句柄 
消息 
参数1 
参数2 
参数3 
参数4项目装载模式   初始为0
变量名类 型静态数组备 注
i整数型 
sql语句文本型 
记录集整数型 
编号文本型 
金额文本型 
备注文本型 
支fu类型文本型 
项目文本型 
时间文本型 
支fuID文本型 
缓存数据文本型0
判断 (消息 = 1)  ' 请求装填表项数据
判断 (参数4 = 0)  ' 在装填数据时 需要将 项目数据全部装填(通常如此)
如果 (取数组成员数 (数据缓存) < 参数1 + 1)
重定义数组 (数据缓存, 真, 参数1 + 1)
sql语句 = “SELECT ja.acid, ja.acmoney, ja.actime, ja.acremark, ja.zhifu, jc.classname, jp.proname FROM jizhang_account ja JOIN jizhang_program jp ON ja.proid = jp.proid JOIN jizhang_account_class jc ON ja.zhifu = jc.classid JOIN jizhang_bank jb ON ja.bankid = jb.bankid order by acid desc LIMIT ”到文本 (参数1)“, 1”
如果 (执行SQL语句 (全_mysql句柄, sql语句))
信息框 (“单条数据cha询失败!”, 0, , )
返回 (0)


记录集 = 取记录集 (全_mysql句柄)
如果 (记录集 = 0)
信息框 (“单条数据获取记录集失败!”, 0, , )
返回 (0)


读字段值 (记录集, “acid”, 编号)
读字段值 (记录集, “acmoney”, 金额)
读字段值 (记录集, “actime”, 时间)
读字段值 (记录集, “acremark”, 备注)
读字段值 (记录集, “zhifu”, 支fuID)
读字段值 (记录集, “classname”, 支fu类型)
读字段值 (记录集, “proname”, 项目)
数据缓存 [参数1 + 1] = 编号 + “|” + 金额 + “|” + 时间 + “|” + 备注 + “|” + 支fuID + “|” + 支fu类型 + “|” + 项目
释放记录集 (记录集)
缓存数据 = 分割文本 (数据缓存 [参数1 + 1], “|”, )
编号 = 缓存数据 [1]
金额 = 缓存数据 [2]
时间 = 缓存数据 [3]
备注 = 缓存数据 [4]
支fuID = 缓存数据 [5]
支fu类型 = 缓存数据 [6]
项目 = 缓存数据 [7]

超级列表框EX1.置项目文本_W (参数1, 0, ATU (编号))
如果 (支fuID = “1”)
超级列表框EX1.置项目文本_W (参数1, 1, ATU (“收入>>” + 支fu类型))
超级列表框EX1.置项目文本_W (参数1, 1, ATU (“支出>>” + 支fu类型))

超级列表框EX1.置项目文本_W (参数1, 2, ATU (项目))
超级列表框EX1.置项目文本_W (参数1, 3, ATU (金额))
超级列表框EX1.置项目文本_W (参数1, 4, ATU (时间))
超级列表框EX1.置项目文本_W (参数1, 5, ATU (备注))


返回 (1)


返回 (0)


i支持库列表   支持库注释   
mysqlMySql支持库
ExuiKrnln(未知支持库)

最佳答案

查看完整内容

把数据库的数据存到数组,然后插入数量哪里写你数组的成员数。 那个滚动回调不要用,每次只加载一页,滚到到底才会再次加载,使用起来就感觉卡

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 8 天

沙发
发表于 2025-3-28 22:14:13 | 只看该作者   江苏省宿迁市
把数据库的数据存到数组,然后插入数量哪里写你数组的成员数。
那个滚动回调不要用,每次只加载一页,滚到到底才会再次加载,使用起来就感觉卡

虚表.png (8.58 KB, 下载次数: 0)

虚表.png

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (9/9)

签到天数: 15 天

板凳
发表于 2025-3-28 23:14:56 | 只看该作者   江苏省苏州市
数据多了,虚表加载的一瞬间卡一下是正常的吧,加载以后就不会卡了。
回复

使用道具 举报

结帖率:86% (42/49)

签到天数: 15 天

地板
 楼主| 发表于 2025-3-29 19:03:12 | 只看该作者   四川省*
aipca 发表于 2025-3-28 23:14
数据多了,虚表加载的一瞬间卡一下是正常的吧,加载以后就不会卡了。

我现在用的是分段加载,一次加载20个数据,滚动超级列表框到底部的时候再加载20个数据,有一点点卡,我以为虚表能解决这个问题的
回复

使用道具 举报

结帖率:86% (42/49)

签到天数: 15 天

地下
 楼主| 发表于 2025-3-30 10:03:56 | 只看该作者   四川省*
zs5819 发表于 2025-3-30 00:29
把数据库的数据存到数组,然后插入数量哪里写你数组的成员数。
那个滚动回调不要用,每次只加载一页,滚到 ...

算了,不折腾虚表了,感觉还是分段加载快一些
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表