单击按钮更改切片器状态
Change the slicer state on clicking a button
我的报告中有 4 个指示不同范围的按钮和一个切片器。我想根据我点击的按钮更改切片器值。
是否可以在单击按钮时更改切片器的值?
制作 4 个切片器副本,并在每个切片器中 select 不同的值。现在 select 功能区中的书签和 selection 窗格并隐藏所有 3 个切片器并保留一个可见。然后 select 按钮的 属性 并在 Action 中,选择 Bookmark 和上面创建的书签名称。
您需要对其他 3 个按钮执行相同的操作。每次 select 一个新的切片器。
您可以在 Power BI 中执行此操作,方法是将书签应用于切片器并在按钮的操作 属性 中添加这些书签。在 Power BI Embed 中,您可以将 buttonClick
事件应用于按钮并设置切片器的状态,但将为报表中的所有按钮触发该事件。您可以只使用一个按钮,并根据单击按钮的次数设置切片器状态,而不是使用 4 个按钮。要在单击嵌入报告中的按钮时更改切片器的状态,请查找以下代码片段:
- 设置过滤器配置:
const filter = {
$schema: "http://powerbi.com/product/schema#advanced",
target: {
table: "Table_Name",
column: "Column_Name"
},
filterType: models.FilterType.Advanced,
logicalOperator: "And",
conditions: [
// Add condition here as per your requirement
]
};
- 获取当前活动页面:
const pages = await report.getPages();
// Retrieve the active page.
let page = pages.filter(function (page) {
return page.isActive;
})[0];
- 获取所有视觉效果:
const visuals = await page.getVisuals();
- 找到切片器:
let slicer = visuals.filter(function (visual) {
return visual.type === "slicer" && visual.name === "Visual_Name";
})[0];
- 添加按钮点击事件并设置切片器状态:
report.on("buttonClicked", function (event) {
slicer.setSlicerState({ filters: [filter] });
});
请在此处查找参考资料:
https://docs.microsoft.com/javascript/api/overview/powerbi/handle-events#buttonclicked
https://docs.microsoft.com/javascript/api/overview/powerbi/control-report-slicers#set-slicer-state
我的报告中有 4 个指示不同范围的按钮和一个切片器。我想根据我点击的按钮更改切片器值。
是否可以在单击按钮时更改切片器的值?
制作 4 个切片器副本,并在每个切片器中 select 不同的值。现在 select 功能区中的书签和 selection 窗格并隐藏所有 3 个切片器并保留一个可见。然后 select 按钮的 属性 并在 Action 中,选择 Bookmark 和上面创建的书签名称。
您需要对其他 3 个按钮执行相同的操作。每次 select 一个新的切片器。
您可以在 Power BI 中执行此操作,方法是将书签应用于切片器并在按钮的操作 属性 中添加这些书签。在 Power BI Embed 中,您可以将 buttonClick
事件应用于按钮并设置切片器的状态,但将为报表中的所有按钮触发该事件。您可以只使用一个按钮,并根据单击按钮的次数设置切片器状态,而不是使用 4 个按钮。要在单击嵌入报告中的按钮时更改切片器的状态,请查找以下代码片段:
- 设置过滤器配置:
const filter = {
$schema: "http://powerbi.com/product/schema#advanced",
target: {
table: "Table_Name",
column: "Column_Name"
},
filterType: models.FilterType.Advanced,
logicalOperator: "And",
conditions: [
// Add condition here as per your requirement
]
};
- 获取当前活动页面:
const pages = await report.getPages();
// Retrieve the active page.
let page = pages.filter(function (page) {
return page.isActive;
})[0];
- 获取所有视觉效果:
const visuals = await page.getVisuals();
- 找到切片器:
let slicer = visuals.filter(function (visual) {
return visual.type === "slicer" && visual.name === "Visual_Name";
})[0];
- 添加按钮点击事件并设置切片器状态:
report.on("buttonClicked", function (event) {
slicer.setSlicerState({ filters: [filter] });
});
请在此处查找参考资料:
https://docs.microsoft.com/javascript/api/overview/powerbi/handle-events#buttonclicked
https://docs.microsoft.com/javascript/api/overview/powerbi/control-report-slicers#set-slicer-state