Power BI自定义视觉:日期格式设置项的条件显示与值持久化问题
Power BI自定义视觉:条件显示自定义日期格式并持久化值
可以实现,问题出在你通过动态添加/移除slices来控制显示,导致非显示状态下dateFormatCustom的状态不被Power BI设置系统跟踪。正确做法是通过控制字段的visible属性来显示/隐藏,而非从slices中移除字段,这样字段值会被持久化保存。
具体修改步骤
1. 修改XTickLabelsGroup类
调整dateFormatCustom的初始化默认可见性,并修改rebuildSlices方法,仅更新可见性而非修改slices数组:
class XTickLabelsGroup extends formattingSettings.SimpleCard { dateFormat = new AutoDropdown({ name: "dateFormat", displayName: "Date format", value: "automatic" }); // 默认隐藏自定义输入框 dateFormatCustom = new TextInput({ name: "dateFormatCustom", displayName: "Custom date format", value: "", placeholder: "custom => MMM_YY", visible: false }); ... rebuildSlices() { // 仅根据dateFormat的值控制自定义输入框的可见性 this.dateFormatCustom.visible = this.dateFormat.value === "custom"; // 其他始终显示的切片无需修改 } name = "xTickLabels"; displayName = "Tick labels"; // 始终将dateFormatCustom包含在slices中 slices = [ this.dateFormat, this.dateFormatCustom, ... ]; }
2. 保持visual.ts中getFormattingModel方法不变
原方法中调用rebuildSlices的逻辑可以保留,确保每次构建格式化模型时同步可见性状态:
public getFormattingModel(): powerbi.visuals.FormattingModel { this.formattingSettings.axis1.tickLabels.rebuildSlices(); return this.formattingSettingsService.buildFormattingModel(this.formattingSettings); }
原理说明
- 当你从
slices中移除dateFormatCustom时,Power BI的格式化服务会认为该字段不再属于当前设置项,不会保存其值,切换回custom模式时会重置为默认值。 - 通过控制
visible属性,dateFormatCustom始终存在于格式化模型中,界面上仅隐藏显示,但Power BI会持续跟踪并保存它的输入值,实现状态持久化。
内容的提问来源于stack exchange,提问作者MatthiasVC
相关产品推荐
相关产品推荐

