有一张用户可以从列表框中复选product lines的报表。当用户重新运行报表时,之前在列表框中的选择被系统自动记住了。
现在用户希望在重新运行报表时,之前所有的选择都被清空。
准备工作…
任创建一张在Product Lines上应用了过滤的报表,为product line创建一个Listbox类型的prompt,并设置其multi-select属性为Yes。
如何实施…
1. 和上个示例类似,创建一个span标签嵌套listbox,并定义此span的ID为A1。
2. 在prompt page的页脚,定义一个新的HTML项目。代码为:
<script>
var theSpan = document.getElementById("A1");
var a = theSpan.getElementsByTagName("A");
for( var i = a.length-1; i >= 0; i-- )
{ var link = a[i];
if( typeof(link.id) == "string" && link.id.match(/PRMT_(SV|LIST)_LINK_DESELECT_/) )
{link.fireEvent("onclick");}
}
</script>
3. 运行报表,任选product line。之后点击报表左上角的Run按钮重运行报表。注意之前在prompt中的选择已经被清空。
工作原理…
在使用listbox控件时,Report Studio提供了两个链接:Select all和Deselect all。这里我们俘获了Deselect all链接,并使用fireevent()方法调用它。
更多…
类似的,我们可以通过检索PRMT_(SV|LIST)_LIST_SELECT来俘获Select all链接。我们还可以通过以下的方法删除链接:
link.parentNode.removeChild(link)