单击按钮更改切片器状态

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 个按钮。要在单击嵌入报告中的按钮时更改切片器的状态,请查找以下代码片段:

  1. 设置过滤器配置:
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
    ]
};
  1. 获取当前活动页面:
const pages = await report.getPages();

    // Retrieve the active page.
let page = pages.filter(function (page) {
    return page.isActive;
})[0];
  1. 获取所有视觉效果:
const visuals = await page.getVisuals();
  1. 找到切片器:
let slicer = visuals.filter(function (visual) {
        return visual.type === "slicer" && visual.name === "Visual_Name";
    })[0];
  1. 添加按钮点击事件并设置切片器状态:
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