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

Power Apps Canvas应用分页无数据显示且存在委托警告问题

问题排查与解决方案

核心问题定位

你的代码存在语法错误,同时隐藏画廊的加载限制也会导致大表数据无法完整获取,具体问题如下:

1. 数据显示画廊Items语法逻辑错误

你在FirstN和LastN的参数里错误用了=赋值运算符,而非算术运算计算分页范围:

  • FirstN(..., drp_Pagination.Selected.Value = varPageNum)是赋值操作,无法正确计算前N条记录数,应该改为drp_Pagination.Selected.Value * varPageNum
  • 最后一页的LastN参数里,drp_Pagination.Selected.Value = (...)同样是赋值逻辑,应该改为计算剩余记录数的算术表达式

2. 隐藏画廊的加载上限限制

Canvas应用画廊默认最多加载2000条记录(可调整至5000),但你的表有12万条数据,gal_NewCaseAgenHidden.AllItems只能获取前2000/5000条,后续记录无法加载,直接导致分页失效,同时触发委托警告。

3. 委托警告的根源

CountRows(gal_NewCaseAgenHidden.AllItems)会触发委托警告,因为AllItems是客户端集合,而Dataverse的Count函数是可委托的,应该直接基于数据源计算总记录数。


修正后的代码方案

方案一:修复原有隐藏画廊分页逻辑(适用于小数据集)

1. 隐藏画廊gal_NewCaseAgenHidden的Items(保留原过滤逻辑)

Filter(
    AgenGenNewCases,
    StartsWith('Policy Number', txt_policyNumberNewCase.Text)
    && (IsBlank(drp_CStatus.Selected.Value) || 'Case Status' = drp_CStatus.Selected.Value)
)

2. 数据显示画廊gal_NewCaseAgenGen的Items(修正算术逻辑)

With(
    {
        pageSize: drp_Pagination.Selected.Value,
        totalRecords: Value(lbl_CountNewCase.Text)
    },
    If(
        varPageNum * pageSize > totalRecords,
        // 最后一页:取剩余记录
        LastN(
            FirstN(gal_NewCaseAgenHidden.AllItems, totalRecords),
            totalRecords - (varPageNum - 1) * pageSize
        ),
        // 常规页:取当前页指定条数
        LastN(
            FirstN(gal_NewCaseAgenHidden.AllItems, varPageNum * pageSize),
            pageSize
        )
    )
)

3. 更新lbl_CountNewCase的Text属性(替换为可委托的Count)

Count(
    Filter(
        AgenGenNewCases,
        StartsWith('Policy Number', txt_policyNumberNewCase.Text)
        && (IsBlank(drp_CStatus.Selected.Value) || 'Case Status' = drp_CStatus.Selected.Value)
    )
)

方案二:服务器端分页(推荐用于12万条大数据集)

直接用Skip+Take在Dataverse数据源上处理分页,无需依赖隐藏画廊,完全规避加载上限和委托问题:

// 数据显示画廊的Items直接使用此代码
With(
    {
        filteredData: Filter(
            AgenGenNewCases,
            StartsWith('Policy Number', txt_policyNumberNewCase.Text)
            && (IsBlank(drp_CStatus.Selected.Value) || 'Case Status' = drp_CStatus.Selected.Value)
        ),
        pageSize: drp_Pagination.Selected.Value
    },
    Skip(filteredData, (varPageNum - 1) * pageSize)
    |> Take(pageSize)
)

同时lbl_CountNewCase的代码沿用方案一中的Count函数即可。


额外检查项

  • 确认varPageNum初始值为1,分页按钮逻辑正确:上一页减1(需限制varPageNum >=1),下一页加1(需限制varPageNum <= RoundUp(Value(lbl_CountNewCase.Text)/drp_Pagination.Selected.Value, 0))
  • 检查drp_Pagination的选项为纯数字(如10、20、50),确保Selected.Value是数值类型
  • 确认'Case Status'字段类型与drp_CStatus.Selected.Value匹配(如均为选项集值或文本)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:57:37