教程 5:使用 JavaScript 编写事件处理程序
本教程提供有关编写一组事件处理程序的指示信息。本教程假定您有一个基于 Classic Models, Inc. 样本数据库的基本报告设计。启动报告设计的唯一要求是,它包含具有客户名称列的客户表。在本教程中,您将计算名称包含“Mini”字符串的客户数并在弹出窗口中显示结果。
在本教程中,您将执行下列任务:
任务 1:打开报告设计
打开使用 Classic Car 样本数据库并显示客户名称表的报告设计。
- 如果有必要,通过选择“窗口”->“显示视图”->“导航器”来打开导航器。
- 双击适当的报告设计。这将在布局编辑器中打开该文件,如图 22-4 所示。
任务 2:在 Table.onCreate( ) 方法中创建并初始化计数器
为了计算名称包含字符串 Mini 的客户数,首先必须声明一个全局计数器并将它的值设置为零。由于在检索任何行之前都会执行
Table.onCreate( ) 方法,所以,最好在此方法中完成声明全局计数器和设置值的工作。您将在 Row.onCreate( ) 方法中有条件地使此计数器递增。
- 在“布局”中,通过将光标置于表的左下角附近,选择该表。将显示表图标,如图 22-5 所示。
- 选择“脚本”选项卡。将显示“脚本”选项卡,如图 22-6 所示。
- 在脚本窗口中,为 onCreate( ) 方法输入以下代码行:
- 要运行该报告并验证该代码不会导致任何错误,请选择“预览”。
- 滚动到报告底部,JavaScript 错误消息将显示在此位置。如果没有任何错误,就会显示该报告,如图 22-7 所示。
如果您看到错误消息,则表示输入的语句不正确。在这种情况下,请返回到脚本窗口,选择刚刚修改过的方法,更正错误,然后再次选择“预览”。
任务 3:在 Row.onCreate( ) 方法中有条件地使计数器递增
要计算名称包含字符串 Mini 的客户数,必须检查每个客户的名称并在字符串 Mini 每次出现时使计数器递增 1。适合于执行此任务的逻辑位置是 Row.onCreate( ) 方法,这是因为每次从数据源检索数据行之后都会执行此方法。
- 在“布局”中,选择“行”,然后选择“脚本”。
- 打开脚本窗口顶部的方法列表并选择 onCreate,如图 22-8 所示。
- 在脚本窗口中输入以下 JavaScript 代码行:
注意,在 this 后面输入句点时,将显示包含所有可用方法和属性(其中包括
getRowData)的弹出窗口。此行代码获取具有 getExpressionValue( ) 方法的 IRowData 的实例,此方法用于获取该行中某一列的内容。
- 在刚刚输入的行下面,输入以下 JavaScript 代码行:
此行代码返回数据集中 CUSTOMERNAME 列的表列内容。
可以使用 JavaScript 选用板来在上一行中插入下列每个元素:
- 选择“预览”以再次运行该报告,从而验证输入的代码不会导致任何错误。
任务 4:使用 ReportDesign.afterFactory( ) 方法来显示结果
要显示名称包含字符串 Mini 的客户数,请在处理完所有表行后运行的方法中插入代码。其中一个适合于插入此代码的逻辑位置是 ReportDesign.afterFactory( ) 方法。
- 从脚本窗口的下拉列表中选择 afterFactory( ) 方法。
- 在 afterFactory( ) 方法中输入以下代码:
- 选择“预览”以查看结果。如果代码中没有任何错误,您就会看到类似于图 22-10
所示的报告。
如果您未看到 Count of Minis 窗口,请在 Eclipse 窗口后面查找该窗口。如果 Count of Minis 窗口未显示,则最有可能的原因是某些代码导致了脚本编制错误。
如果您怀疑发生了脚本编制错误,请滚动到报告底部,所有脚本编制错误消息都将显示在此位置。在大多数情况下,加号(+)旁边会显示简要的错误消息。加号表示还有更详细的错误消息,展开简要错误消息后将显示这些消息。要展开简要错误消息,请选择该加号。接着,向下滚动就可以查看更详细的错误消息。
