代码之家  ›  专栏  ›  技术社区  ›  Eray Balkanli

如何用javascript或c_获取powerbi报告页面的标题?

  •  0
  • Eray Balkanli  · 技术社区  · 5 年前

    我有一份PowerBI报告,有5页。下面的代码帮助我在嵌入powerbi报告的网页出现在屏幕上时将所需页面设置为默认页面。

    var report = powerbi.embed(reportContainer, config); 
    
    report.on('loaded', () => {
       report.getPages().then(pages => pages[3].setActive()); 
    });
    

    目前我有两个问题找不到答案:

    1-如何使用页面的确切名称而不是数组编号将其设置为默认值?我需要做如下的事情: pages => pages['Overall Summary'].setActive();

    2-是否有办法接收C上的页面,或将我要访问的页面传递给C?我之所以这样问,是因为我想根据登录的用户隐藏一些页面。

    任何建议都将不胜感激。谢谢!

    编辑:通过说page name,我指的是powerbi报告底部的选项卡名称,每个页面的名称与以前不同: enter image description here

    2 回复  |  直到 5 年前
        1
  •  0
  •   Eray Balkanli    5 年前

    1-不幸的是,“page”对象当前不包含ID或索引属性。您可以通过console.log(page)查看所有属性;但是,我们有“displayname”属性,这是我要查找的。我们所要做的就是将页面保存在数组对象中,并在循环时使用计数器获取该对象的索引。请检查下面处理此问题的代码:

    report.on('loaded', () => {
       report.getPages().then(function (pages) 
          pages.forEach(function(page) { pageArray.push(page);}); 
          var i = 0;
          while (i < pageArray.length) { 
            if (pageArray[i].displayName == \"" + activePageSet + "\") { pages[i].setActive(); } 
            i = i + 1;
          } 
       });
    });
    

    2-目前无法访问C中的页面,只有JS可以工作。要隐藏任何页面,您可以转到PowerBI报表编辑器,只需右键单击任何页面并单击“隐藏页面”选项。对于这种情况,您需要根据用户或组隐藏/取消隐藏页面,此链接有一个很好的解决方案: https://community.powerbi.com/t5/Developer/Power-BI-Embed-Page-Menu-as-List-View/td-p/174938

        2
  •  0
  •   Kishanbhai Pujara    5 年前

    为了

    1. 您能考虑更新嵌入配置以在配置中提供页面名称吗?所以您不必在调用embed之后更新它。 这将以提供的页面作为活动页面加载报告:

      var config = {
          ...
          pageName: 'Overall Summary'
      };
      

      参考文献: https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details

    2. 不确定C,在JS客户机中,power bi返回包含所有页面信息的pages对象。 如果不编辑将为所有用户更新的源报告,您将无法修改导航窗格。因此,对于基于用户隐藏页面,您可以添加自己的导航窗格,然后仅在其中显示受限制的页面集。然后,您可以更新活动页面以更改为该页面。

    为此,您可以按照Erray共享的社区链接进行操作。

    推荐文章