我正在使用Power Bi嵌入式软件包来嵌入Power Bi报告-https://github.com/microsoft/powerbi-client-react
报告嵌入在编辑模式下,因此用户可以创建或编辑报告。现在,我有了一个保存按钮,一旦用户对Power Bi报表进行了更改,我想将该报表保存在数据库中。您能告诉我如何触发报告事件吗?似乎允许的保存事件不起作用。
另外,如果我必须在用户进行更改或创建报表后获取报表实例,如何才能再次获取报表实例以反映新的更改?
<PowerBIEmbed
embedConfig = {{
type: 'report', // Supported types: report, dashboard, tile, visual and qna
id: '<Report Id>',
embedUrl: '<Embed Url>',
accessToken: '<Access Token>',
tokenType: models.TokenType.Embed,
viewMode: models.ViewMode.Edit,
settings: {
panes: {
filters: {
expanded: false,
visible: false
}
},
background: models.BackgroundType.Transparent,
}
}}
eventHandlers = {
new Map([
['loaded', function () {console.log('Report loaded');}],
['rendered', function () {console.log('Report rendered');}],
['error', function (event) {console.log(event.detail);}]
])
}
cssClassName = { "report-style-class" }
getEmbeddedComponent = { (embeddedReport) => {
this.report = embeddedReport as Report;
}}
/>
报表已正确嵌入,但是现在有人进行了更改后,如何再次获取更新的报表实例,以便获得视觉效果并将其存储在数据库中?
当前,power-client-react不支持创建新报告。但是,您可以使用该库编辑现有报告并将其另存为新报告。为此,您需要执行以下步骤:
如果要将报告更改另存为新报告,请在生成嵌入令牌请求中传递以下JSON正文:
{ "accessLevel": "Edit", "allowSaveAs": "true", }
如果要将报告更改保存在同一报告中,请在生成嵌入令牌请求中传递以下JSON正文:
{ "accessLevel": "Edit", }
嵌入报告-在您的embedConfig对象中添加以下配置:
viewMode: models.ViewMode.Edit, permissions: models.Permissions.All,
处理“保存”事件:
如果要将报告更改另存为新报告,请在eventHandlers映射中添加以下事件处理程序以获取新报告ID,然后嵌入新报告以获取其实例:
['saved', function (event) { var newReportId = event.detail.reportObjectId); }]
如果要将报表更改保存在同一报表中,请在eventHandlers映射中添加以下事件处理程序,以确保已保存更改:
['saved', function (event) { console.log("Report saved"); }]
保存报告:
以编程方式:如果要保存按钮单击事件的更改并在单击侦听器中调用以下函数,请在应用程序中添加一个保存按钮:
如果要将报告更改另存为新报告
function saveReport() { var saveAsParameters = { name: "<name_of_new_report>" }; this.report.saveAs(saveAsParameters); }
如果报告更改要保存在同一报告中
this.report.save();
Power BI嵌入式体验:
注意:保存操作完成后,将触发“ saved”事件,该事件将返回一个Json对象,其中包含新的reportId,报告名称,旧的reportId(如果有的话)以及该操作是saveAs还是save。然后,您可以使用此newReportId生成嵌入网址和嵌入令牌,以嵌入报告并获取报告实例。
您可以参考GitHub Wiki创建新报告。
在Microsoft Docs中找到完整的文章。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句