【问题标题】:Javascript for Cognos to display all pages of report in iframe用于 Cognos 的 Javascript 在 iframe 中显示报告的所有页面
【发布时间】:2016-01-30 02:36:51
【问题描述】:

我需要在显示屏上显示一个 cognos 报告,并且报告需要在给定的时间间隔内刷新。

1) 一份 cognos 报告中有 6 页,我需要一个接一个地显示所有六个页面,它应该转到下一个报告,并且必须以同样的方式显示所有页面在所有报告中。

目前我正在使用 iframe 显示多个 cognos 报告,但显示停止是我无法显示 cognos 报告的所有页面,因为它只显示报告的第一页。

显示多个 cognos 报告的脚本。

<script type="text/javascript">
        var slideimages = new Array();
            slideimages[0] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%201ST%20PAGE%27%5d&ui.name=BRACKENFELL%20DC%20-%201ST%20PAGE&run.outputFormat=&run.prompt=true";
            slideimages[1] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20FULL%20CASE%20PICKER%20SHIFT%201%27%5d&ui.name=BRACKENFELL%20DC%20-%20FULL%20CASE%20PICKER%20SHIFT%201&run.outputFormat=HTML&run.prompt=true";
            slideimages[2] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20FULL%20CASE%20PICKER%20SHIFT%202%27%5d&ui.name=BRACKENFELL%20DC%20-%20FULL%20CASE%20PICKER%20SHIFT%202&run.outputFormat=HTML&run.prompt=true";
            slideimages[3] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20INDIRECT%20SHIFT%27%5d&ui.name=BRACKENFELL%20DC%20-%20INDIRECT%20SHIFT&run.outputFormat=HTML&run.prompt=true";
            slideimages[4] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20LATE%20PICKS%20SCOREBOARD%27%5d&ui.name=BRACKENFELL%20DC%20-%20LATE%20PICKS%20SCOREBOARD&run.outputFormat=HTML&run.prompt=true";
            slideimages[5] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20LOCAL%20ROUTES%20REMAINING%20CASES%20TO%20PICK%27%5d&ui.name=BRACKENFELL%20DC%20-%20LOCAL%20ROUTES%20REMAINING%20CASES%20TO%20PICK&run.outputFormat=HTML&run.prompt=true";
            slideimages[6] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20LOCAL%20ROUTES%20REMAINING%20LETDOWNS%27%5d&ui.name=BRACKENFELL%20DC%20-%20LOCAL%20ROUTES%20REMAINING%20LETDOWNS&run.outputFormat=HTML&run.prompt=true";
            slideimages[7] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20LOCAL%20ROUTES%20REPICKS%20PENDING%27%5d&ui.name=BRACKENFELL%20DC%20-%20LOCAL%20ROUTES%20REPICKS%20PENDING&run.outputFormat=HTML&run.prompt=true";
            slideimages[8] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20MEZZANINE%20SHIFT%27%5d&ui.name=BRACKENFELL%20DC%20-%20MEZZANINE%20SHIFT&run.outputFormat=HTML&run.prompt=true";
            slideimages[9] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20SECTION%20AND%20REPORT%20GROUP%20SUMMARY%27%5d&ui.name=BRACKENFELL%20DC%20-%20SECTION%20AND%20REPORT%20GROUP%20SUMMARY&run.outputFormat=HTML&run.prompt=true";
            slideimages[10] = "http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20TOWER%20SHIFT%27%5d&ui.name=BRACKENFELL%20DC%20-%20TOWER%20SHIFT&run.outputFormat=HTML&run.prompt=true";

// style="border: 0; width: 100%; height: 100%" frameborder="0" 
// style="border: 0; width: 100%; height: 100%" frameborder="0" scrolling="no" onload="resizeIframe(this)"
    </script>
</head>

身体 { 边距:0; 溢出:隐藏; }

        #iframe1
        {
            height:   100%;
            left:     0px;
            position: absolute;
            top:      0px;
            width:    100%;
        }
    </style>
<body>
    <iframe id="slide" src="" frameborder="0" style="height: 100%; width: 100%; position: absolute;" height="100%" width="100%" ></iframe>
    <script type="text/javascript">

        var step=0
        function slideit(){
         document.getElementById('slide').src = slideimages[step]
         if (step<slideimages.length-1)
         step++
         else
          step=0
         setTimeout("slideit()",20000)
        }
        slideit()

    </script>

</body>

谁能帮我解决一下。

亲切的问候, 阿尼尔·R·G

【问题讨论】:

    标签: javascript cognos-10


    【解决方案1】:

    这是您通过 JavaScript 和 Cognos JS API 前进到下一页的方式:

    var report = cognos.Report.getReport('_THIS_');
    report.sendRequest(cognos.Report.Action.NEXT);
    

    该 API 在 Cognos BI 10.2 及更高版本中提供。

    我会在每个目标报告中创建一个函数,如下所示:

    function navigate(action) {
        var report = cognos.Report.getReport('_THIS_');
        report.sendRequest(action);
    }
    

    然后我会从主代码中调用该函数:

    var iframe = document.getElementById('slide');
    iframe.navigate(cognos.Report.Action.NEXT);
    

    这会将当前在 iFrame 中的报告前移一页。

    挑战来自于循环浏览页面。您必须以某种方式知道每个报告有多少页。如果报告具有固定的已知页数,则没有问题。我会创建一个对象数组来存储源和页数:

    var reports = [];
    reports.push(new Report('http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%201ST%20PAGE%27%5d&ui.name=BRACKENFELL%20DC%20-%201ST%20PAGE&run.outputFormat=&run.prompt=true',4));
    reports.push(new Report('http://COGDEVWEB1:80/ibmcognos/cgi-bin/cognosisapi.dll?b_action=cognosViewer&ui.action=run&ui.object=CAMID(%22dcanalyze%3au%3aa202da3d8b73bb4b954d583834a025a5%22)%2ffolder%5b%40name%3d%27My%20Folders%27%5d%2ffolder%5b%40name%3d%27Anil%27%5d%2ffolder%5b%40name%3d%27On%20Screen%20Testing%27%5d%2ffolder%5b%40name%3d%27BRACKENFELL%20SCHEDULES%27%5d%2ffolder%5b%40name%3d%27ON%20SCREEN%20DISPLAYS%27%5d%2ffolder%5b%40name%3d%27SCOREBOARD%20SCHEDULES%2007%3a00%20-%2019%3a00%27%5d%2freport%5b%40name%3d%27BRACKENFELL%20DC%20-%20FULL%20CASE%20PICKER%20SHIFT%201%27%5d&ui.name=BRACKENFELL%20DC%20-%20FULL%20CASE%20PICKER%20SHIFT%201&run.outputFormat=HTML&run.prompt=true',9));
    ...
    
    function Report (src,pagecount) {
        this.src = src;
        this.pagecount = pagecount;
        this.currentpage = 1;
        this.advanceCount = function () {
            if (this.currentpage == this.pagecount) {
                this.currentpage = 1;
            } else {
                this.currentpage++;
            }
        }
    }
    

    然后,您可以遍历报告数组,像以前一样更改源,然后使用当前实例的 currentpage 和 pagecount 来确定前进页面的次数。您调用 iframe.navigate(cognos.Report.Action.NEXT);正确的次数并在报表对象上调用 advanceCount() 以增加页面计数器。

    作为参考,您可以传递给 navigate() 函数的所有操作如下:

    cognos.Report.Action.NEXT
    cognos.Report.Action.BACK
    cognos.Report.Action.REPROMPT
    cognos.Report.Action.CANCEL
    cognos.Report.Action.FINISH
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多