几天前,我学会了在电源BI中制作报告,这是学习电源BI的绝佳经验。当我为基于MVC的Web应用程序创建仪表板时,我想让我的仪表板看起来和填充有吸引力。我正在考虑嵌入功率BI报告,因为我在视图中使用了以下代码: -
update mstr
SET
IsGlobalFamilyUnique = case when (rn > 1) then 0 else 1 end
from(
select
ControlNumber,
MD5hash,
IsglobalFamilyUnique,
GlobalFamilyDupID,
row_number() over (partition by [MD5Hash] order by ID asc) [RN]
from dbo.tblMaster
where NuixGuid = TopLvlGuid and IsGlobalFamilyUnique is null
)mstr
控制器的代码如下: -
<body>
<script type="text/javascript" src="~/Scripts/PowerBI/powerbi.js"></script>
<script type="text/javascript">
window.onload = function () {
var iframe = document.getElementById("iFrameEmbedReport");
iframe.src = "https://app.powerbi.com/reportEmbed?reportId=" + embedReportId;
iframe.onload = postActionLoadReport;
}
function postActionLoadReport() {
var m = {
action: "loadReport",
accessToken: accessToken
};
message = JSON.stringify(m);
iframe = document.getElementById("iFrameEmbedReport");
iframe.contentWindow.postMessage(message, "*");;
}
</script>
<style>
#iFrameEmbedReport {
width: 95%;
height: 95%;
}
</style>
<iframe ID="iFrameEmbedReport"></iframe>
</body>
我认为,我正在做的一切正确,但我不知道为什么它无法显示报告。如果我在上面给出的代码中有任何错误,请建议我。
答案 0 :(得分:1)
不清楚错误的位置,因为您提供了大量代码并且没有关于错误本身的规范。这里有几点需要注意:
div
元素您需要执行以下步骤:
AuthenticationContext.AcquireTokenAsync
获取身份验证令牌PowerBIClient
。这是您申请的代币。切勿将其传递给用户。不会在会话中存储,因为它将过期。 PowerBIClient(new Uri(_Context.ApiUrl), new TokenCredentials(authResult.AccessToken, "Bearer"))
client.Dashboards.GetDashboardsInGroupAsync(GroupId)
。如果您已经知道您要获取的内容类型及其ID,则可以跳过此步骤。请记住,如果EmbedUrl
属性在返回的对象上为空,那么即使您手动构建此类网址,也无法呈现。client.Reports.GenerateTokenInGroupAsync(GroupId, Id-of-content, new GenerateTokenRequest(accessLevel: "view"))
var embedToken = $('#embedToken').val();
var txtEmbedUrl = $('#txtReportEmbed').val();
var txtEmbedReportId = $('#txtEmbedReportId').val();
var models = window['powerbi-client'].models;
var permissions = models.Permissions.All;
var config= {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: embedToken,
embedUrl: txtEmbedUrl,
id: txtEmbedReportId,
permissions: permissions,
settings: {
filterPaneEnabled: true,
navContentPaneEnabled: true
}
};
var embedContainer = $('#embedContainer')[0];
var report = powerbi.embed(embedContainer, config);
你应该能够测试你的东西here。只需插入你的价值观。
你也可以在这里观察示例应用程序] 2。上面提供的流程适用于&#34; app拥有数据&#34;情况下。