Как получить заголовки страниц отчета PowerBI в JavaScript или C #? - PullRequest
0 голосов
/ 11 января 2019

У меня есть отчет 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 #? Причина, по которой я спрашиваю об этом, заключается в том, что я хочу скрыть некоторые страницы в зависимости от пользователя, вошедшего в систему.

Любой совет будет оценен. Спасибо!

РЕДАКТИРОВАТЬ: Говоря pagename, я имел в виду имена вкладок в нижней части отчета powerBI, каждая страница имеет другое имя, как было: enter image description here

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Для

  1. Можете ли вы подумать об обновлении конфигурации встраивания, чтобы предоставить имя страницы в конфигурации. Так что вам не придется обновлять его после вызова embed. Это загрузит отчет с предоставленной страницы в качестве активной страницы:

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

    Ссылка: https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details

  2. Не уверен насчет C #. В JS Client Power BI возвращает объект страниц, который содержит всю информацию о страницах. Вы не сможете изменить панель навигации без редактирования исходного отчета, который обновит его для всех пользователей. Таким образом, чтобы скрыть страницы на основе пользователей, вы можете добавить свою собственную панель навигации и затем отображать только ограниченный набор страниц. Затем вы можете обновить активную страницу, чтобы перейти на эту страницу.

Для этого вы можете перейти по ссылке сообщества, которой поделился Эррей.

0 голосов
/ 12 января 2019

1 - К сожалению, объект "page" в настоящее время не содержит свойства ID или INDEX. Вы можете увидеть все свойства, выполнив 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

...