You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Apps中Days语法无效及日历颜色同步问题求助

Power Apps 开发问题解决方案

问题1:DateAdd 中 'Days' 语法无效的替代方案

Power Apps 里 DateAdd 函数的时间单位需使用枚举值 DateTimeUnit.Days,而非直接写 Days。修改后的代码如下:

ClearCollect(
    DateCollection,
    ForAll(
        Sequence(Day(DateAdd(Today(), 1, DateTimeUnit.Months)) - Day(Today())),
        {
            Date: DateAdd(DateAdd(Today(), -Day(Today()) + 1, DateTimeUnit.Days), Value, DateTimeUnit.Days),
            Color: LookUp(CalendarEvents, EventDate = DateAdd(DateAdd(Today(), -Day(Today()) + 1, DateTimeUnit.Days), Value, DateTimeUnit.Days), Color)
        }
    )
);

如果需要生成当月所有日期(而非从当前日到月底),可把 Sequence 的参数改为更准确的写法:
Sequence(Day(DateSerial(Year(Today()), Month(Today())+1, 0))),这样能直接获取当月总天数。

问题2:日历瓷砖颜色与选择状态不同步的解决方法

核心问题

  1. DateCollection 仅在页面 OnVisible 时加载,用户保存新事件后未刷新集合,新数据无法同步;
  2. 日期比较可能存在时间部分差异(比如 EventDate 包含时间,生成的 Date 是纯日期),导致 LookUp 匹配失败;
  3. 瓷砖颜色的 LookUp 用了固定日期字符串,无法动态匹配对应日期。

分步解决

  1. 修改保存按钮代码,同步刷新集合
    保存事件后立即刷新 DateCollection,确保新数据生效:
Collect(CalendarEvents, {
    EventDate: DateValue(Text(DatePickerCanvas1_1.SelectedDate, "yyyy-mm-dd")), // 强制存储纯日期,避免时间干扰
    Status: StatusList.Selected.Value,
    Color: Switch(
        StatusList.Selected.Value,
        "Kein Ereignis/Unfall", ColorValue("#30D99B"),
        "Medizinische Behandlung", ColorValue("#F29F05")
        // 新增状态继续补充
    )
});

// 保存后刷新集合
ClearCollect(
    DateCollection,
    ForAll(
        Sequence(Day(DateSerial(Year(Today()), Month(Today())+1, 0))),
        {
            Date: DateAdd(DateSerial(Year(Today()), Month(Today()), 1), Value-1, DateTimeUnit.Days),
            Color: LookUp(CalendarEvents, EventDate = DateAdd(DateSerial(Year(Today()), Month(Today()), 1), Value-1, DateTimeUnit.Days), Color, ColorValue("#FFFFFF")) // 默认白色
        }
    )
);

Navigate(SafetyCross);
  1. 修改瓷砖颜色公式
  • 如果瓷砖是画廊控件的一部分:直接用 ThisItem.Color
  • 如果是独立瓷砖:把固定日期替换为瓷砖对应的动态日期,比如 LookUp(CalendarEvents, EventDate = DateValue(Text(Today(), "yyyy-mm-dd")), Color, ColorValue("#FFFFFF"))
  1. 优化页面 OnVisible 逻辑
    确保页面加载时正确生成当月所有日期的集合:
ClearCollect(
    DateCollection,
    ForAll(
        Sequence(Day(DateSerial(Year(Today()), Month(Today())+1, 0))),
        {
            Date: DateAdd(DateSerial(Year(Today()), Month(Today()), 1), Value-1, DateTimeUnit.Days),
            Color: LookUp(CalendarEvents, EventDate = DateAdd(DateSerial(Year(Today()), Month(Today()), 1), Value-1, DateTimeUnit.Days), Color, ColorValue("#FFFFFF"))
        }
    )
);

内容的提问来源于stack exchange,提问作者Thejazzstercaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:24:53