Forum Discussion
Paginated report not embedding inside update panel ASP.net
Hi,
I am using the ASP.NET WebForms framework and embedding the report using a JavaScript SDK approach.
The `powerBIReportContainer` div does not display the report when it is placed inside an `<asp:UpdatePanel>`.
Note: using Wizard forms as well.
When the `powerBIReportContainer` div is positioned outside the `</asp:UpdatePanel>`, the Power BI report renders correctly.
Below is my code snippet. Could you please assist me with what changes I need to make in my JavaScript or any other solutions?
</ContentTemplate>
</asp:UpdatePanel>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/powerbi.js"></script>
<asp:Button ID="btnGenerateReport" runat="server" Text="Generate Report" CssClass="genric_btn green" OnClick="btnGenerateReport_Click" />
<div id="powerBIReportContainer" style="height:600px;width:100%;"></div>
<script type="text/javascript">
var embedUrl = '<%= EmbedUrl %>';
var embedToken = '<%= EmbedToken %>';
var reportId = '<%= ReportId %>';
function embedPowerBIReport() {
if (!embedUrl || !embedToken || !reportId) return;
var models = window['powerbi-client'].models;
var embedConfig = {
type: 'report',
isPaginatedReport: true,
id: reportId,
embedUrl: embedUrl,
accessToken: embedToken,
tokenType: models.TokenType.Embed,
settings: {
panes: {
filters: { visible: false },
pageNavigation: { visible: true }
},
navContentPaneEnabled: true
}
};
var reportContainer = document.getElementById('powerBIReportContainer');
powerbi.reset(reportContainer);
var report = powerbi.embed(reportContainer, embedConfig);
// Show page navigation after report is loaded
report.on("loaded", function () {
report.updateSettings({
panes: {
pageNavigation: { visible: true }
}
});
});
}
window.onload = function () {
embedPowerBIReport();
};
</script>
</div>
</div>
</asp:Content>
- Nasif_Azam1 year ago
Super User
Hey Anonymous ,
In your situation, the issue likely arises because the UpdatePanel is performing a partial postback, which can cause the embedded Power BI report to not render properly. The JavaScript code you're using to embed the Power BI report might be running before the UpdatePanel finishes updating its content, causing the report container (#powerBIReportContainer) to not be fully loaded or accessible.
1. Trigger JavaScript After UpdatePanel Completes: The issue can be resolved by ensuring that the Power BI embedding code runs after the UpdatePanel has been updated. You can do this by hooking into the Sys.Application.add_load event, which ensures the Power BI report embedding happens only after the UpdatePanel is fully refreshed.
Update your script to include Sys.Application.add_load like so:
<script type="text/javascript"> var embedUrl = '<%= EmbedUrl %>'; var embedToken = '<%= EmbedToken %>'; var reportId = '<%= ReportId %>'; function embedPowerBIReport() { if (!embedUrl || !embedToken || !reportId) return; var models = window['powerbi-client'].models; var embedConfig = { type: 'report', isPaginatedReport: true, id: reportId, embedUrl: embedUrl, accessToken: embedToken, tokenType: models.TokenType.Embed, settings: { panes: { filters: { visible: false }, pageNavigation: { visible: true } }, navContentPaneEnabled: true } }; var reportContainer = document.getElementById('powerBIReportContainer'); powerbi.reset(reportContainer); var report = powerbi.embed(reportContainer, embedConfig); // Show page navigation after report is loaded report.on("loaded", function () { report.updateSettings({ panes: { pageNavigation: { visible: true } } }); }); } // Trigger embedding after UpdatePanel updates Sys.Application.add_load(function () { embedPowerBIReport(); }); </script>2. Ensure Button Triggers UpdatePanel: Ensure that the btnGenerateReport button triggers the UpdatePanel refresh when clicked. Make sure the UpdatePanel wraps the content to be updated.
3.Embedding After Postback: Use Sys.Application.add_load to execute the embedding script after the UpdatePanel completes its update during a postback.
For Detailed Information:
Embedding Power BI in Web Applications
If you found this solution helpful, please consider accepting it and giving it a kudos (Like) it’s greatly appreciated and helps others find the solution more easily.
Best Regards,
Nasif Azam- Anonymous1 year agoNot applicable
Thanks for your response.
As you suggested i added Sys.Application.add_load . But still the PowerBI not rendering. FYI. the update panel is on ascx page.
// Trigger embedding after UpdatePanel updates Sys.Application.add_load(function () { embedPowerBIReport(); });- Nasif_Azam1 year ago
Super User
Hey Anonymous ,
Since Sys.Application.add_load didn't resolve the issue, here are some other things to try:
Ensure UpdatePanel wraps both the button and the report container to ensure they are updated together.
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Button ID="btnGenerateReport" runat="server" Text="Generate Report" /> <div id="powerBIReportContainer" style="height:600px;"></div> </ContentTemplate> </asp:UpdatePanel>Use PageRequestManager for postback completion:
var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_pageLoaded(function () { embedPowerBIReport(); });Reset the report if already embedded:
var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_pageLoaded(function () { powerbi.reset(document.getElementById('powerBIReportContainer')); embedPowerBIReport(); });Check for any JavaScript errors in the browser's developer tools console.
If you found this solution helpful, please consider accepting it and giving it a kudos (Like) it’s greatly appreciated and helps others find the solution more easily.
Best Regards,
Nasif Azam
- Anonymous1 year agoNot applicable
Hi,
I am using the ASP.NET WebForms framework and embedding the report using a JavaScript SDK approach.
The `powerBIReportContainer` div does not display the report when it is placed inside an `<asp:UpdatePanel>`.
Note: using Wizard forms as well.
When the `powerBIReportContainer` div is positioned outside the `</asp:UpdatePanel>`, the Power BI report renders correctly.
Below is my code snippet. Could you please assist me with what changes I need to make in my JavaScript or any other solutions?
Also suggest for hiding filter panel ?
<asp:UpdatePanel ID="UpdatePanelReport" runat="server">
<ContentTemplate>
<div class="clear"></div>
<div class="search-col3">
<asp:Button ID="btnBack" runat="server" Text="<< Back" OnClick="btnBack_Click" CssClass="genric_btn " Visible="false" />
<%--<asp:Button ID="btnGenerateReport" runat="server" Text="Generate Report" CssClass="genric_btn green" OnClick="btnGenerateReport_Click" />--%>
</div>
<%--<div id="powerBIReportContainer" style="height:600px;width:100%;"></div>--%>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/powerbi.js"></script>
<asp:Button ID="btnGenerateReport" runat="server" Text="Generate Report" OnClick="btnGenerateReport_Click" />
<div id="powerBIReportContainer" style="height:600px;width:100%;"></div>
<script type="text/javascript">
var embedUrl = '<%= EmbedUrl %>';
var embedToken = '<%= EmbedToken %>';
var reportId = '<%= ReportId %>';function embedPowerBIReport() {
if (!embedUrl || !embedToken || !reportId) return;
var models = window['powerbi-client'].models;
var embedConfig = {
type: 'report',
isPaginatedReport: true,
id: reportId,
embedUrl: embedUrl,
accessToken: embedToken,
tokenType: models.TokenType.Embed,
settings: {
panes: {
filters: { expanded: false, visible: false },
pageNavigation: { visible: true },
parameters: { expanded: false, visible: false }// Hides the parameter pane }
},
navContentPaneEnabled: true
}
};
var reportContainer = document.getElementById('powerBIReportContainer');
powerbi.reset(reportContainer);
var report = powerbi.embed(reportContainer, embedConfig);report.on("loaded", function () {
report.updateSettings({
panes: {
filters: { expanded: false, visible: false },
pageNavigation: { visible: true },
parameters: { expanded: false, visible: false }
}
});
});
}// To load Report inside update panel
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(function () {
powerbi.reset(document.getElementById('powerBIReportContainer'));
embedPowerBIReport();
});</script>
</ContentTemplate></asp:UpdatePanel>
- Nasif_Azam1 year ago
Super User
Hey Anonymous ,
Based on your setup, you are embedding a Power BI report inside an ASP.NET WebForms application using JavaScript, and you're facing 2 issues.
Issue 1: Power BI Report Not Loading Inside <asp:UpdatePanel>: The challenge here is that UpdatePanel performs a partial postback using ASP.NET's AJAX, which does not reload the full page. That often interferes with external JavaScript libraries unless re-initialized correctly. You are already using this code, which is on the right track:
var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_pageLoaded(function () { powerbi.reset(document.getElementById('powerBIReportContainer')); embedPowerBIReport(); });Suggested Improvements:
prm.add_pageLoaded(function () { setTimeout(function () { powerbi.reset(document.getElementById('powerBIReportContainer')); embedPowerBIReport(); }, 100); // short delay to ensure the container is ready });Confirm that powerBIReportContainer is present and not inside a conditionally hidden control at the time of rendering.
Issue 2: Hiding Filter and Parameter Panels: You're correctly applying these settings in your embed configuration and again in the report.on("loaded", ...) event:
settings: { panes: { filters: { expanded: false, visible: false }, parameters: { expanded: false, visible: false }, pageNavigation: { visible: true } } }This approach effectively hides both the filter and parameter panels. Including updateSettings() after the report loads ensures that these settings persist in case they're overridden during rendering.
For Detailed Information:
Power BI JavaScript Embed Configuration Reference (Microsoft Docs)
Embedding Power BI Reports in Web Applications (Microsoft Docs)
Handling Partial Page Updates in ASP.NET WebForms
Power BI JavaScript Client – GitHub Repository
If you found this solution helpful, please consider accepting it and giving it a kudos (Like) it’s greatly appreciated and helps others find the solution more easily.
Best Regards,
Nasif Azam
- Anonymous1 year agoNot applicable
how to hide filter panel below code not working
panes: {
filters: { expanded: false, visible: false },
pageNavigation: { visible: true },
parameters: { expanded: false, visible: false }// Hides the parameter pane }
}- v-ssriganesh1 year ago
Community Support
Hi Anonymous,
Thanks for the update.
Regarding your question about hiding the filter and parameter panes the configuration you're using (panes.filters and panes.parameters) is mainly applicable to Power BI interactive reports, not Paginated Reports.For Paginated Reports, the filter and parameter UI isn't controlled the same way. Instead, to hide the parameters panel, you can disable it when embedding using the supported option parameterPaneEnabled: false.
If you're still seeing the panel, make sure you're using the latest version of the Power BI JavaScript SDK and that the report is truly a paginated report.
If this helps, please mark it as “Accept as solution” and feel free to give a “Kudos” to help others in the community as well.
Thank you.- Anonymous1 year agoNot applicable
Hi,
Please suggest where to add in code level parameterPaneEnabled: false
Below code not working.
var models = window['powerbi-client'].models;
var embedConfig = {
type: 'report',
isPaginatedReport: true,
id: reportId,
embedUrl: embedUrl,
accessToken: embedToken,
tokenType: models.TokenType.Embed,
settings: {
panes: {
filters: { expanded: false, visible: false },
pageNavigation: { visible: true },
parameters: { expanded: false, visible: false }// Hides the parameter pane }
},
navContentPaneEnabled: true,
parameterPaneEnabled: false
}
};
var reportContainer = document.getElementById('powerBIReportContainer');
powerbi.reset(reportContainer);
var report = powerbi.embed(reportContainer, embedConfig);
- v-ssriganesh1 year ago
Community Support
Hello Anonymous,
Just checking in have you been able to resolve this issue? If so, it would be greatly appreciated if you could mark the most helpful reply accordingly. This helps other community members quickly find relevant solutions.
Please don’t forget to “Accept as Solution” and Give “Kudos” if the response was helpful.
Thank you.- Anonymous1 year agoNot applicable
not working Ssriganesh, can you guide me how to render power BI Paginated report inside <ASP.UpdatePanel>
- v-ssriganesh1 year ago
Community Support
Hello Anonymous,
Thank you for the update and please try below code:var models = window['powerbi-client'].models; var embedConfig = { type: 'report', isPaginatedReport: true, id: reportId, embedUrl: embedUrl, accessToken: embedToken, tokenType: models.TokenType.Embed, settings: { panes: { filters: { expanded: false, visible: false }, pageNavigation: { visible: true }, parameters: { expanded: false, visible: false } }, navContentPaneEnabled: true, parameterPaneEnabled: false } };I trust this information proves useful. If it does, kindly “Accept as solution” and give it a 'Kudos' to help others locate it easily.
Thank you.