我已将强力报告嵌入网页。我在报告中有一个名为'Query1'的表,其中我有StudentId列,其数据类型为text。我想通过将特定的StudentId传递到网页来呈现网页上的报告。
为此,我尝试了以下代码: -
@model PowerBIEmbedded_AppOwnsData.Models.EmbedConfig
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script src="~/scripts/powerbi.js"></script>
@if (!string.IsNullOrEmpty(Model.ErrorMessage))
{
<div id="errorWrapper">
<h2>
Error
</h2>
@Model.ErrorMessage
</div>
return;
}
<div id="reportContainer"></div>
@Html.Partial("LiveDemoLink")
<script>
var accessToken = "@Model.EmbedToken.Token";
// Read embed URL from Model
var embedUrl = "@Html.Raw(Model.EmbedUrl)";
var embedReportId = "@Model.Id";
var models = window['powerbi-client'].models;
const filter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Query1",
column: "StudentId"
},
operator: "In",
values: ["1524"]
};
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: models.Permissions.All,
settings: {
filterPaneEnabled: true,
navContentPaneEnabled: true
}
};
var reportContainer = $('#reportContainer')[0];
var report = powerbi.embed(reportContainer, config);
if (report) {
report.setFilters([filter])
.then(function (result) {
console.log(result);
})
.catch(function (errors) {
console.log(errors);
});
}
</script>
但是,动态过滤不成功,我也在报告过滤器中设置了StudentId。
我尝试将其数据类型更改为整数,但它无效。 在这种情况下该怎么办?
答案 0 :(得分:0)
如果您不确定过滤器格式是否正确,我可以建议您快速处理此问题:
答案 1 :(得分:0)
您的代码看起来很不错,但您错过了这一步:例如report.off(&#34;已加载&#34;)。 下面是打字稿代码,您可以将其更改为js:
report.off("loaded");
report.on("loaded", e =>{
console.log("loaded");
this.report.setFilters(filters)
.then(filters=>{
console.log("filters:" + filters);
});
this.report.off("error");
} );
快乐编码