首页 文章

在Cognos 10.2中创建可单击的表/列表

提问于
浏览
1

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

例如:清单报告:

国家,产品,收入

A,A,1

A,B,2

A,C,3

B,d,4

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

1 回答

  • 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中,我们保证它们在每个页面上呈现 .

相关问题