
第 章
回忆一下,我们曾经在第9章中详细讲解了如何定义记录集,以及在第10章中
详细讲解了如何绑定记录集(呵,这些关键的知识和技术点可不能忘记哟) 。自然按
着一般思维习惯,下一章就应该讲解如何控制记录集了。但是,我特意把这个主题往
后移到本章来讲解,中间插入了4 个章节的其他知识点(ASP 共享数据和表单技术) 。
这样安排主要是考虑到在控制记录集时会用到页面间数据共享和传递技术,所以必须
在其中进行一些知识和技术的铺垫。
个人认为 DreamweaverCS3对于记录集控制方面所提供的支持是最强大的。单从
服务器行为的数量上看,如何控制记录集显示的服务器行为在 DreamweaverCS3中基
本上占据了一半的份额,足见其重要性。从建立数据库连接,到定义记录集,再到绑
定记录集,最后到控制记录集的显示。在这个完整的数据流通链条中,末端的重要性
不言而喻,这犹如商品流通渠道,从供应商,到代理商,再到零售商,为了招引顾客
零售商当然会不惜成本的去装潢门面、设计商品展示、营造购物环境、提升服务质量,
如此等等。 动态页面为了能够吸引眼球, 自然不能够把绑定的数据简单一放就完事儿。
如何控制记录集的显示是一门技术,更是一门艺术。当然,本章只能从技术角度
探析DreamweaverCS3控制记录集显示的途经,对于艺术的修养,还需要你不断的去
努力,并逐步提升。
使用 Dreamweaver CS3 动态控制
记录集在页面中显示

DreamweaverCS3+ASP+CSS+Ajax 动态网站开发完全解读
2
15.1 动态控制记录集的一般方法
前面已经介绍过,当定义一个记录集时,只有当前记录可以显示在页面中(参阅 9.1.2 节内容) 。也
就是说把记录集直接绑定到页面中,你只能看到一条记录,在默认情况下只显示第一个记录。对于那些
刚学会定义记录集、并试着把记录集绑定到页面中的热情读者来说,想看看究竟:记录集是什么模样?
结果只能让你失望,所以你还必须继续阅读下面的内容。
动态控制记录集的方法有很多种,根据需要可以自由进行控制。从在当前页内显示记录集内所有记
录, 到分页显示记录集中的数据, 以及显示特定分类记录, 再到记录集显示的动态控制。DreamweaverCS3
提供了四大类服务器行为来进行实现,如果用简单示意图显示则如图151 所示。
记录集
当前记录
重复区域 记录集分页 记录集详细页 显示区域
图
151
从上面示意图你可以直观的看出,要显示记录集必须重复读取记录集中的记录,要控制记录集的显
示必须依靠传递的参数和指定的条件来进行控制。具体说明如下:
l 重复区域:重复区域是简单显示记录集的一种方法。它主要利用循环语句并借助 Recordset 对
象的 Eof 属性和 MoveNext()方法来实现读取并显示部分或全部记录。详细讲解请参照第 15.2
节内容。
l 记录集分页:记录集分页是在重复区域基础上把多条记录放在不同页面显示。除了依靠重复区
域显示技术外,你还需要利用 Recordset 对象的分页属性来控制每页显示的记录数,以及把记
录集准确显示在每页中,避免出现第一页显示最后几条记录,而最后一页显示前面记录等类似
错乱现象。要解决好此类问题,需要你传递好当前页面的参数值。详细讲解请参照第15.3 节内
容。
l 记录集详细页:很多读者在学习这个技术时很容易迷茫,原因就在于不知如何去处理多页协调
控制问题。记录集详细页实质上也是一种分页显示,但是它不是连续的分页,而是根据超链接
或者其他参数传递的值来决定要显示的记录。相当于分类查询。详细讲解请参照第 15.5、15.6

第 15 章 使用 DreamweaverCS3 动态控制记录集在页面中显示
3
节内容。
l 显示区域:显示区域不是记录集读取问题,而是记录集后期控制问题,通过各种条件来决定指
定范围的记录是否显示,以及在什么条件下显示或隐藏。详细讲解请参照第15.4节内容。
15.2 重复区域
重复区域就是重复显示记录集中的记录的显示区域。实施记录集的重复显示在实现技术上不是很
难,在可视化操作上也比较简单。利用DreamweaverCS3提供的“重复区域”服务器行为可以快速实现。
但是由于很多读者忽视了一些技术细节,在使用“重复区域”服务器行为时,也时而遇到一些麻烦,下
面我们就全面讲解“重复区域”服务器行为的应用。
15.2.1 插入“重复区域”服务器行为
插入“重复区域”服务器行为需要满足3 个前提条件:第一,在【数据库】面板中已经建立了与数
据库的连接;第二,在【绑定】面板中已经定义了记录集;第三,已经把记录集中的字段绑定到页面中。
在本地站点新建并打开一个页面,请在前面章节介绍的方法完成上面 3个前提条件。选中插入到页
面的中字段或多个字段。然后启动【服务器行为】面板,单击【行为】面板顶部的加号按钮( ),从
弹出的下拉菜单中选择【重复区域】选项,打开【重复区域】对话框(参见图152所示)。
图
152
【重复区域】对话框包含两个选项,首先在【记录集】下拉列表框中选择本页面已定义的记录集,
凡是在【绑定】面板中定义的记录集都会显示在该下拉列表框中。在【显示】单选按钮中选择本页面将
要显示的记录数。
如果选择第一个单选按钮,则可以在其右侧的【记录】文本框中指定每页预显示的记录数,当准备
应用记录集分页时,必须选择该项,并设置一个小于记录集总数的值。
如果选择【所有记录】单选按钮,则在该页面中显示记录集中所有记录。此时被绑定“重复区域”
服务器行为的页面会显示如图 153 所示的效果。当然这种没有经过任何样式控制的数据如同一窝蜂,是
不方便浏览的。
如果在【文档】工具栏中单击【活动数据视图】按钮( ),则可以看到记录集中所有产品名称的
列表(参见如图154所示) ,你也可以在浏览器中预览重复区域显示效果。当然,这仅是为了讲解技术
而进行的演示,实际应用中是不允许这样把所有记录如同面团一样揉捏在一起。

DreamweaverCS3+ASP+CSS+Ajax 动态网站开发完全解读
4
活动数据视图
图
153
图
154
15.2.2 编辑“重复区域”服务器行为
插入“重复区域”服务器行为之后,你可以在【服务器行为】面板中对这个“重复区域”服务器行
为进行再编辑。双击【服务器行为】面板中的具体“重复区域”行为,可以打开【重复区域】对话框,
然后重新设置各种参数即可。也可以选中服务器行为,单击面板顶部的减号按钮( )删除该服务器行
为。
当在【服务器行为】面板中选中某个具体的“重复区域”服务器行为时,可以在【属性】面板中快
速修改记录集需要重复显示的记录数(如图155所示) ,该面板的属性设置与【重复区域】对话框的设
置选项完全相同,这里就不再重复说明。
图
155
15.2.3 解析重复区域源代码
绑定“重复区域”服务器行为之后,可以切换到【代码】视图,查看该该服务器行为的源代码。只
有了解源代码的工作原理,你才能够从本质上明白该服务器行为的使用技巧。整个源代码如下:
<%'初始化变量
DimRepeat1__numRows '定义记录集循环显示的行数
DimRepeat1__index '定义记录集循环的次数
'设置记录集循环显示行数为1,即显示所有记录,修改该值可以改变重复区域显示的记录数
Repeat1__numRows=1
Repeat1__index=0 '初始化循环次数为0

第 15 章 使用 DreamweaverCS3 动态控制记录集在页面中显示
5
Recordset1_numRows=Recordset1_numRows+Repeat1__numRows' 计算记录集的记录数
%>
……
<% '循环读取并显示记录
'当循环显示的行数不等于0,同时记录集不是空集,在执行下面代码
While((Repeat1__numRows<>0)AND(NOTRecordset1.EOF))
%>
<%=(Recordset1.Fields.Item("产品名称").Value)%> <! 绑定的字段 >
<%
Repeat1__index=Repeat1__index+1 '自动叠加循环次数
Repeat1__numRows=Repeat1__numRows1 '自动计算未显示的记录数
Recordset1.MoveNext() '移到记录集指针到下一条记录
Wend
%>
在上面的“重复区域”服务器行为源代码中,被分成了两个部分:
l 第一块代码(初始化变量代码段)默认位于<html>标签的上面。
l 第二块代码(循环读取并显示记录代码段)一般环绕绑定记录集的代码前后。
通过上面的源代码,可以看到“重复区域”服务器行为主要依靠 While…Wend 循环体来实现重复显
示记录集。实际上,读者也可以使用For…Next循环体或者Do…Loop循环体,但是从执行效率上来比
较,While…Wend 循环体依然是最佳选择。Do…Loop 循环体已经处于被淘汰的边缘,不建议使用,而
用For…Next 循环体的执行速度显示要慢于 While…Wend 循环体。
如果在同一个页面中使用多个“重复区域”服务器行为时,包括在包含文件中定义的“重复区域”
服务器行为,这样很容易出现定义的变量发生冲突的问题。此时,你可以切换到【代码】视图,在“代
码初始化”代码块中删除或修改其中Repeat1__numRows和Repeat1__index变量声明语句。
请注意,当你改动一个服务器行为的源代码时,【服务器行为】面板中就会不再显示该行为,只有
当恢复初次插入服务器行为时的源代码原貌,【服务器行为】面板列表中才可以再次显示该服务器行为。
15.2.3 重复区域的选择问题
简单的使用“重复区域”服务器行为,你可能遇不到什么大的问题。因为页面内容比较单纯。但是
如果在一个比较复杂的页面中插入“重复区域”服务器行为时,你就要小心了。我们先用一个简单的示
例进行说明(参见光盘示例文件 rs_show_Repeat2.asp)。
15.2.3.1 问题的提出
下图是把一个记录集中 4个字段插入到表格单元格中,然后选中这 4 个单元格。在【服务器行为】
面板中应用“重复区域”服务器行为(如图 156 所示) 。
而当你在【文档】工具栏中单击【活动数据视图】按钮( ) ,或者在浏览器中预览时,会吃惊地
发现所显示的效果并非是你想要的效果(如图157 所示)。