如何将数据库中取出的数据暂存在客户端页面上?

tiger201 2006-11-02 10:49:27
我在WINCE的手持终端上开发,由于屏幕小一次只能显示1条记录(一条记录包含10个左右的列)
当从数据库中返回10条左右的记录时,手持需要上下翻页,效率很低(每次翻页都是返回那10多条记录,仅显示与页码对应的记录)。
偶想一次将这10 多条记录从数据库中取出存放在客户端数组中,翻页时再从数组中取,这样就只慢一次,不会翻一次慢一次。但这种方式偶想不明白要怎么实现,请高人指点。
受操作系统和IE限制,.net、ajax、asp文件操作都不能用,看javascript上能不能想出点办法!
谢谢!
...全文
347 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger201 2006-11-03
  • 打赏
  • 举报
回复
IE版本太低,不支持XML
什么都不能 2006-11-03
  • 打赏
  • 举报
回复
用xml流
var dom=new ActiveXObject("MSXML2.XMLDocument");
dom.load("aaa.xml");
var datas=dom.selectSingleNode("data").childNodes; //存储数据的数组
for(var i=0;i<datas.length-1;i++)
{
document.all["cols1"].innerHTML=datas[i].selectSingleNode("aa").text;
document.all["cols2"].innerHTML=datas[i].selectSingleNode("bb").text;
............
}
//或者使用数据岛,更简单一些
tiger201 2006-11-03
  • 打赏
  • 举报
回复
用display:none 由于返回的记录条数不确实,不知道怎么让对应的那条记录显示出来。
tiger201 2006-11-03
  • 打赏
  • 举报
回复
呵呵,楼上说的确实可以将数据存在数组中,不过我真的不知道怎么从数组里读到页面上。不好意思,我很菜。
hdhmail2000 2006-11-02
  • 打赏
  • 举报
回复
如果一定要全部放到客户端的话,用隐藏域就可以了,你翻页的按钮用提交表单的方式来做
hdhmail2000 2006-11-02
  • 打赏
  • 举报
回复
搂主还用这种分页方式阿?明显效率很低
一般都是用数据库来处理,每次仅返回当前页数据
比如如果是sql server的,用select top,下面是个例子
SELECT TOP "+pageSize+" * FROM STD_INFO T WHERE (STD_NO NOT IN (SELECT TOP "+prePagesSize +" std_no FROM STD_INFO ORDER BY "+Order+")) ORDER BY "+Order

如果是mysql 的,用limit,下面是例子
SELECT * FROM tb_stuff " + "WHERE 1=1 " + condition + order + "LIMIT " + preItemsNumber +"," + itemPerPage;
int preItemsNumber=(currentPage-1)*itemPerPage;
oracle也有类似取记录的
H8 2006-11-02
  • 打赏
  • 举报
回复
显示在表格的10行里,默认显示第一行,后9行隐藏
JAVASCRIPT控制翻页时候就是让一行显示,其他9行隐藏
jspadmin 2006-11-02
  • 打赏
  • 举报
回复
数组?也是在客户端内存中的,这样一样会慢啊
你现在是客户端系统慢呢、还是传输带宽窄网速慢?
如果是网速慢,你就先都传输到客户端,保存到数组,点击时,通过层的隐藏显示来实现 翻页
或许可行
showlin 2006-11-02
  • 打赏
  • 举报
回复
混合的写法,其实就是一开头把数据库里的东西写到javascript数组中

<script langue="javascript">
var javasuzu=new Array();
<%
sql="select * from table1"
set rs=conn.execute(sql)
i=0;
do until rs.eof
response.write "javasuzu[" & i & "]=new Array('" & rs("字段1") & "','" & rs("字段2") & "','" & rs("字段3") & "','" & rs("字段4") & "');" & vbcrlf
i=i+1
rs.movenext
loop
rs.close
%>
</script>


执行完之后,就把数据集保存在javasuzu这个二维数组中了,你可以看看页面源文件就知道
随后要对这个javascript数组怎么操作分页就不关我的事了
北京不不 2006-11-02
  • 打赏
  • 举报
回复
二楼意思说..其实十多条都已读出来.只不过是用display:none 隐藏了..你再用javascript控制display=""显示出来了就行了.类似于把数据存在客户端了.
tiger201 2006-11-02
  • 打赏
  • 举报
回复
2楼的具体实现我不大清楚,请帮我给个例子好吗?
我想用javascript 但是vbscript的数组没法传递到javascript中。
网上有人说通过 aa = new vbArry(vbsuzu);javasuzu=aa.toarry()实现传递,但我这里报没有定义的vbsuzu
tiger201 2006-11-02
  • 打赏
  • 举报
回复
我们用的是Oracle,数据逻辑比较复杂,基本上都是用存储过程,3楼的方式我试过,不但没提速反而更慢了。
主要瓶颈还是在网络传输上,因此想尽量减少网络使用频率。内存有64M基本还是够用的

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧