在Cognos 10.2

时间:2016-08-19 06:29:47

标签: charts cognos cognos-10 cognos-bi

我有一个列表报告由提示填充。但是,我想根据用户选择的行,使用报表中的两列作为图表的过滤器。是否可以在认知中执行此操作?欢迎任何建议。

例如为: 列表报告:

州,产品,收入

A,A,1

A,B,2

A,C,3

B,d,4

因此,当用户点击一行(比如第一行)时,A和a应该用作下面图表的过滤器

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是将第二列转换为HTML链接。该链接将触发一些JavaScript,点击后将执行以下操作:

  1. 使用第二列的传入值填充提示(隐藏或可见)
  2. 执行重新谴责行动
  3. 重新提示会使用与点击相对应的值重新绘制图表。

    要将数据项转换为链接,请更改在其两侧附加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中,我们保证它们会在每个页面上呈现。