添加条件格式

  • 版本 :2023.1(当前版本)

添加条件格式

条件格式允许报表创建者根据数值指定在报表中显示颜色的方式。

本文介绍如何将条件格式功能添加到 Power BI 视觉对象。

条件格式只能应用于以下属性类型:

  • 颜色

  • 文本

  • 图标

  • Web URL

向项目添加条件格式

本部分说明如何向现有 Power BI 视觉对象添加条件格式。 本文中的示例代码基于 SampleBarChart 视觉对象。 可以检查 barChart.ts 中的源代码。

在“格式”窗格中添加条件颜色格式条目

在本部分中,你将了解如何在“格式”窗格中向数据点添加条件颜色格式条目。

  1. 你将在 VisualObjectInstance 中使用 propertyInstanceKind 数组,该数组由 powerbi-visuals-api 公开。 第一步是验证文件是否包含此导入:

    TypeScript复制

    import powerbiVisualsApi from "powerbi-visuals-api";
  2. 若要指定适当的格式类型(Constant、ConstantOrRule 或 Rule),请使用 VisualEnumerationInstanceKinds 枚举。 将以下导入添加到文件:

    TypeScript复制

    import VisualEnumerationInstanceKinds = powerbiVisualsApi.VisualEnumerationInstanceKinds;
  3. 设置格式设置属性实例类型

  • getFormattingModel API 方法

  • enumerateObjectInstances API 方法 - 已弃用

若要对支持条件格式设置的属性进行格式设置,请在其 descriptor 中设置所需的实例类型。

TypeScript复制

 public getFormattingModel(): powerbi.visuals.FormattingModel {    // ...
formattingGroup.slices.push(
{
uid: `colorSelector${barDataPoint_indx}_uid`,
displayName: barDataPoint.category,
control: { type: powerbi.visuals.FormattingComponent.ColorPicker,
properties: {
descriptor: {
objectName: "colorSelector",
propertyName: "fill",
selector: dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals),
altConstantValueSelector: barDataPoint.selectionId.getSelector(),
instanceKind: powerbi.VisualEnumerationInstanceKinds.ConstantOrRule //
},
value: { value: barDataPoint.color }
}
}
}
); // ...
}

VisualEnumerationInstanceKinds.ConstantOrRule 将创建条件格式 UI 条目和常量格式 UI 元素。

“条件格式”按钮的屏幕截图,它显示在 Power BI 的“常规颜色”按钮旁。

定义条件格式的行为方式

定义格式应用于数据点的方式。

使用 powerbi-visuals-utils-dataviewutils 下声明的 createDataViewWildcardSelector 来指定是否将条件格式应用于实例和/或总计。 有关详细信息,请参阅 DataViewWildcard。

对要应用条件格式设置的属性进行以下更改:

  • 使用 dataViewWildcard.createDataViewWildcardSelector(dataViewWildcardMatchingOption) 调用替换值 selectorDataViewWildcardMatchingOption 定义是否将条件格式应用于实例和/或总计。

  • 添加具有之前为 selector 属性定义的值的 altConstantValueSelector 属性。

  • getFormattingModel API 方法

  • enumerateObjectInstances API 方法 - 已弃用

若要对支持条件格式设置的属性进行格式设置,请在其 descriptor 中设置所需的实例类型。

TypeScript复制

 
public getFormattingModel(): powerbi.visuals.FormattingModel { // ...

formattingGroup.slices.push(
{
uid: `colorSelector${barDataPoint_indx}_uid`,
displayName: barDataPoint.category,
control: { type: powerbi.visuals.FormattingComponent.ColorPicker,
properties: {
descriptor: {
objectName: "colorSelector",
propertyName: "fill",
// Define whether the conditional formatting will apply to instances, totals, or both
selector: dataViewWildcard.createDataViewWildcardSelector(dataViewWildcard.DataViewWildcardMatchingOption.InstancesAndTotals), // Add this property with the value previously defined for the selector property
altConstantValueSelector: barDataPoint.selectionId.getSelector(),

instanceKind: powerbi.VisualEnumerationInstanceKinds.ConstantOrRule
},
value: { value: barDataPoint.color }
}
}
}
); // ...
}

注意事项和限制

以下视觉对象不支持条件格式:

  • 基于表的视觉对象

  • 基于矩阵的视觉对象

建议不要将条件格式用于系列。 相反,应允许客户单独设置每个系列的格式,从而使其易于直观区分系列。 大多数具有系列的现成视觉对象都采用这种方法。