Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Shape 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.

Reply
runrunrun
Resolver I
Resolver I

how to set page & filter to embedded report?

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.

2 ACCEPTED SOLUTIONS
v-chuncz-msft
Community Support
Community Support

@runrunrun,

 

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

Community Support Team _ Sam Zha
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

runrunrun
Resolver I
Resolver I

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();
            }

View solution in original post

5 REPLIES 5
runrunrun
Resolver I
Resolver I

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

v-chuncz-msft
Community Support
Community Support

@runrunrun,

 

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

Community Support Team _ Sam Zha
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

following 

Sunkari
Responsive Resident
Responsive Resident

Just want to know the answer

Helpful resources

Announcements
November Carousel

Fabric Community Update - November 2024

Find out what's new and trending in the Fabric Community.

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Nov PBI Update Carousel

Power BI Monthly Update - November 2024

Check out the November 2024 Power BI update to learn about new features.

Live Sessions with Fabric DB

Be one of the first to start using Fabric Databases

Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.