Я знаю, что уже поздно, но, возможно, полезно для других, таких как я, которые ищут фрагменты кода. Следующее получает все страницы отчета и создает кнопки для их встраивания на другую страницу.
Обратите внимание, что это из ASP.NETCORE MVC и я можем предоставить мою защищенную информацию для встраивания из предоставленной модели.
Надеюсь, это поможет ...
$(document).ready(function() {
var preloadElement = powerbi.preload({ type: 'report', baseUrl: 'https://embedded.powerbi.com/reportEmbed' });
$(preloadElement).on('preloaded', function () {
setupEnhancedReportLinks("#enhanced-report-container", @Json.Serialize(Model.EnhancedReports));
});
});
function setupEnhancedReportLinks(containerName, reportsModel) {
$.each(reportsModel, function () {
const config = {
type: 'report',
id: this.id,
embedUrl: this.embedUrl,
accessToken: this.embedToken.token,
tokenType: models.TokenType.Embed,
permissions: models.Permissions.All,
viewMode: models.ViewMode.View,
settings: {
filterPaneEnabled: false,
navContentPaneEnabled: false
}
};
let elements = [];
elements.push($("<h4> ").attr({ id: `title-for-${config.id}` }).text(this.displayName));
elements.push($("<div>").attr({ id: `buttons-for-${config.id}` }));
// Note this element is hidden; loading a report still requires a page element to contain it, so we hide it on creation
elements.push($("<div>").attr({ id: `report-for-${config.id}` }).hide());
// add all report information into the main dom element
$(containerName).append(($("<div>").attr({ id: `container-for-${config.id}`, 'class': 'well col-lg-12' }).append(elements)));
// Load the report
// fetch, then iterate the pages to create the buttons which are added to the report's button container
var report = powerbi.load($(`#report-for-${config.id}`)[0], config);
report.on('loaded',function() {
report.getPages().then(function (pages) {
$.each(pages, function() {
console.log("is this a page", this, config);
$(`#buttons-for-${config.id}`)
.append($('<a>')
.text(this.displayName)
.attr({
href: `/EmbeddedReport/EmbedReport?reportId=${config.id}&reportSection=${this.name}`,
class: 'enh-button'
}
));
});
});
});
});
}