您可以使用用户在表单的一个或多个字段中提供的输入来决定选择框中的值。 当您想从数据源为用户提供两个带有多个有效选择的选项集,但不想使得该用户能够指定自定义选择时,此技术非常有用。 此选项因而帮助强制执行用户选择的标准化和有效性,一般的,同时仍然向用户提供多个选项以供选择。
该技术的一个常见应用为带有国家/地区和州/省选择框的表单。 使用 reportobjid 和 reportobjvars 属性时,您可以对州/省选择框进行配置,以便只显示该用户所选国家/地区的州/省。
要使用这个基于用户的选择项预填充选择框的技术,请遵循以下步骤。 该过程使用这个国家-州情况作为例子。
在我们的这个运行示例中,会创建一个报告数据对象,以便从数据库检索国家/地区列表。
显示表单时,报告数据对象将运行,并使用产生的数据填充组合框。
记录数据对象的 ID 用于稍后引用。
考虑以下示例查询用于 MDB 的数据对象。 该示例将返回可用于该表单相连服务或服务选项的国家/地区列表
SELECT country_id,country_name from my_country_table
此查询将执行以下操作:
注意:使用数据对象填充组合框时,不要向选择框添加任何选项,因为用户打开表单时,这些选择将被忽略(不使用)。 选择框的任何选项都被忽略,仅数据对象“有用”。
注意:如果不同区域设置的用户使用该表单,则可选择性地对该工具提示文本或选择框的名称进行本地化。
在我们这个运行示例中,将创建第二个报告数据对象,以便基于用户选择的国家/地区从数据库检索州/省。 按照步骤 1 中的指南创建第二个报告数据对象。
select state_id,state_name from my_state_table where country_id=%selected_country%
有效值为下列内容之一:
注意:请将字符串用单引号引起来,如上所示。 在引起来的字符串中,如果需要,请使用反斜线 (\) 作为转义符,指定真正的单引号或撇号。 例如:$({‘what\’s the status?’})
$({'reportvar':_.user.lastName,’reportvar1’:’abc’,’reportvar2’:12,’reportvar3’:foo()})
在我们这个运行示例中,将创建第二个选择框,以便基于用户选择的国家/地区用数据库中的州/省进行填充。 对于州/省选择框的 reportobjvars 属性,指定名为 ca_fdGetSelectedOptionValues 的预定义 JavaScript 函数,如下所示:
$({'selected_country':ca_fdGetSelectedOptionValues ('<form _id> ','country' )[0]})
指定包含第一个选择框的表单的 _id 属性值。 您要在第 2 步中引用该表单。
指定第一个选择框的 _id 属性值。 您要在第 2 步创建和记录该值。
ca_fdFetchSelectData('<form _id>','<field _id>');
指定包含第二个选择框的表单的 _id 属性值。 您要在第 4 步中引用该表单。
指定包含第二个选择框的表单的 _id 属性值。 您要在第 4 步创建和记录该值。
在我们的运行示例中,会将国家/地区选择框的 onchange 属性设置为以下内容:
ca_fdFetchSelectData('<form _id>','<state field _id>');
作为一项最佳实践,在生产环境中使用之前,请在测试环境中使用某个服务测试该表单。
|
版权所有 © 2013 CA。
保留所有权利。
|
|