Report Studio之JavaScript技巧一、提示的动态默认值

浏览: 2308

假定有一张用户可以选择发货月份的报表。发货月份为一系列的值直到当前月。用户经常要选择上一个月以查看上一个月的数据,所以他们希望可以设置提示的默认值为上一个月。

 

准备工作

 

任意创建一张包含Shipment Month Key字段的报表,定义detail filter为:

[Shipment Month Key]=? ShipmentMonthKey?

添加一个prompt page,并在此page上添加一个使用ShipmentMonthKey参数的prompt

 

如何实施

 

1. 选中prompt,并定义其排序,使得Shipment Month Key以降序显示。

2. 按照假定,我们知道MonthKey为直到当前月的数值,并已经降序排列。现在我们开发代码默认地选择选择prompt下拉框的第二个值。

3. Shipment Month prompt前添加一个HTML项目,并定义为:

<span id = ‘A1’>

4. Shipment Month prompt后添加一个HTML项目,并定义为:

Clipboard Image.png

5. 添加另外一个HTML项目到prompt page的页脚,在Finish按钮之后。并定义其代码为:

<script>

var theSpan = document.getElementById("A1");

var a = theSpan.getElementsByTagName("select");

for( var i = a.length-1; i >= 0; i-- )

{   var prompts = a[i];

if( prompts.id.match(/PRMT_SV_/))

 {  prompts.selectedIndex = 3;  }

canSubmitPrompt();

}

</script>

6. 运行报表并测试。

工作原理

 

此处使用的逻辑是先降序排列Month,然后再下拉列表中从上之下选择第二个选项。因为数据库中提供的数据直到本月,所以从上之下选择的第二个值即为上月的。

Report Studio页面就是一个HTML页面。因而在页面中使用的元素就可以使用HTML提供的标准控制方法实现控制。我们可以在HTML项目中编辑代码实现大部分的HTML功能。

如果我们在HTML项目中嵌入JavaScript代码,它会在报表页面载入是自动执行。

 

此处,我们使用在prompt外套上一个span标签的方式来缩小JavaScript搜索范围。首先通过使用getElementById()方法获取span标签,然后通过getElementsByTagName()方法,获取span标签内所有标签为select的子对象。接着,使用了一个循环逐个获取span标签内的使用select标签的对象。最后,使用selectIndex的方法,选择prompt的第三个对象。

这里,我们还可以使用

getFormWarpRequest()._oLstChoicesPromptName.options[3].selected = true;

的方法俘获对象。这里,我们先要在属性栏中为prompt定义一个名称。

请体会这两种方法的不同之处,并弄明白循环在此处的作用。

推荐 0
本文由 zhengyi1943 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册