Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreShape the future of the Fabric Community! Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions. Take survey.
Hi, I want to ask some questions.
first using this guide
https://powerbi.microsoft.com/en-us/documentation/powerbi-developer-integrate-report/
My application already work displaying power bi report
How to set the page & filter to that report ?
I'm using this code in my script
function postActionLoadReport() { // Construct the push message structure var m = { action: "loadReport", accessToken: '@TempData["accessToken"]', oDataFilter: "MyTable/Location eq 'abc'", pageName : 'Page 2' }; message = JSON.stringify(m); // push the message. iframe = document.getElementById('iFrameEmbedReport'); iframe.contentWindow.postMessage(message, "*");; iframe.contentWindow.print(); }
but it didn't display the 'Page 2' and no filter selected.
And my second question is
how to set multiple filter?, so the report programmatically load the filters
PS: I'm new in javascript programming. Any help & references is appreaciated
Thanks.
Solved! Go to Solution.
By using the new Power BI JavaScript API, you could set the load configuration properties pageName and filters.
https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details
Thanks for the solution Sam,
Already tried using this, still can't get it to work. Any working sample without using Azure AD will be helpful.
My current work around is concatenating Power BI report filters with ';' as delimiter and 1 page per report.
Still using the same code 🙂
// Post the access token to the IFrame function postActionLoadReport() { // Construct the push message structure var m = { action: "loadReport", accessToken: '@TempData["accessToken"]', oDataFilter: "@Html.Raw(HttpUtility.JavaScriptStringEncode((string)TempData["ReportFilter"].ToString()))", pageName: 'ReportSection1' }; message = JSON.stringify(m); // push the message. iframe = document.getElementById('iFrameEmbedReport'); iframe.contentWindow.postMessage(message, "*");; iframe.contentWindow.print(); }
Thanks for the solution Sam,
Already tried using this, still can't get it to work. Any working sample without using Azure AD will be helpful.
My current work around is concatenating Power BI report filters with ';' as delimiter and 1 page per report.
Still using the same code 🙂
// Post the access token to the IFrame function postActionLoadReport() { // Construct the push message structure var m = { action: "loadReport", accessToken: '@TempData["accessToken"]', oDataFilter: "@Html.Raw(HttpUtility.JavaScriptStringEncode((string)TempData["ReportFilter"].ToString()))", pageName: 'ReportSection1' }; message = JSON.stringify(m); // push the message. iframe = document.getElementById('iFrameEmbedReport'); iframe.contentWindow.postMessage(message, "*");; iframe.contentWindow.print(); }
You have to use Power BI service and get the name from the url, it will show as "ReportSectionff84e9ab2bc3f5fb5f74"
Then you just plop that into the embeded URL: &pageName=ReportSectionff84e9ab2bc3f5fb5f74 and whalla, they seemed to have changed to a new URL scheme without telling us leaving us clueless when trying to embed only a certain page
By using the new Power BI JavaScript API, you could set the load configuration properties pageName and filters.
https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details
following
Just want to know the answer
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Check out the November 2024 Power BI update to learn about new features.
User | Count |
---|---|
4 | |
3 | |
1 | |
1 | |
1 |
User | Count |
---|---|
9 | |
6 | |
3 | |
3 | |
2 |