我有一个列表报告由提示填充。但是,我想根据用户选择的行,使用报表中的两列作为图表的过滤器。是否可以在认知中执行此操作?欢迎任何建议。
例如为: 列表报告:
州,产品,收入
A,A,1
A,B,2
A,C,3
B,d,4
因此,当用户点击一行(比如第一行)时,A和a应该用作下面图表的过滤器
答案 0 :(得分:1)
执行此操作的一种方法是将第二列转换为HTML链接。该链接将触发一些JavaScript,点击后将执行以下操作:
重新提示会使用与点击相对应的值重新绘制图表。
要将数据项转换为链接,请更改在其两侧附加HTML标记的表达式。
如果您的数据项是[Query1]。[Item],那么您的转换版本可能是:
'<a href="#" onclick="fireJS(''' + [Presentation].[Location].[Item] + ''')">' + [Presentation].[Location].[Location Number] + '</a>'
在列表报告中,解锁页面并拖动HTML项目。将HTML项目的“源类型”属性设置为“数据项值”,并在“数据项值”属性中设置新转换的数据项。
需要提示才能存储点击的值。这可以是文本提示。放置它的最佳位置是List Page Footer。您需要指定一个名称属性才能在JavaScript中使用它。我将在下面的代码中将其命名为“textPrompt”。
您需要一些JavaScript来处理click事件。指定的链接触发一个名为'fireJS'的函数,并传入单击的值。您将需要List Page Footer中的新HTML项来保存JavaScript。它应该出现在提示之后。
以下是用于读取点击值的代码,填充文本提示并重新提示页面。
<script>
var report = cognos.Report.getReport('_THIS_');
var textPrompt = report.prompt.getControlByName('textPrompt');
function fireJS(value) {
textPrompt.setValues([{'use':value}]);
report.sendRequest(cognos.Report.Action.REPROMPT);
}
</script>
如果您的图表根据textPrompt的值进行过滤,那么图表将刷新反映该选项的数据。
注意:我建议将提示符和JavaScript对象放在List Page Footer中。这是有充分理由的。默认情况下,Cognos页面HTML列表输出,一次只显示20条记录。如果您将提示符和JavaScript放在列表下方,则在到达输出的最后一页之前,它们都不会呈现。直到那时,这些功能都无效。通过将这些对象放在List Page Footer中,我们保证它们会在每个页面上呈现。