在Power应用程序中筛选超过委派限制的Sharepoint数据



我最近在其他人使用Sharepoint数据作为源开发的Power应用程序上遇到了一个问题,由于委派限制,新记录停止出现。

数据主要分为3个嵌套表。

表A是表B的父表,表B是表C的父表。

正在使用的代码结构如下(SharePointIntegration OnEdit属性的一部分(:

ClearCollect(
Items,
AddColumns(
ShowColumns(
Filter('Table B','Table A'.Id = SharePointIntegration.SelectedListItemID),
"TABLE_B_COLUMNS"
) As TBL_B,
"Table_C",
ShowColumns(
Filter('Table C', 'Table B'.Id = TBL_B.ID),
"TABLE_C_COLUMNS"
)
)
);

我一直在寻找各种youtube视频、文档、文章等,但似乎找不到在这种情况下有效的解决方案。

代表团在文件中指出了以下内容,这似乎是问题的一部分:

表的SharePoint ID字段是Power Apps中的数字字段。但是,SharePoint仅支持对ID字段执行相等('='(委派操作。

我正在寻找一种理想情况下不需要更改Sharepoint源数据结构的解决方法。

如果不清楚,对于此特定应用程序,这仅适用于在Sharepoint中选择要编辑或查看的记录。一个项目的单个记录永远不会超过可删除的限制,但所有项目的组合都可以,这就是为什么新项目不再出现的原因。

我已经尝试了此源上显示的方法,该方法似乎不适用于Sharepoint源:https://powerusers.microsoft.com/t5/Building-Power-Apps/500-item-limit-in-CDM-entity-search-filter-need-to-switch-to-asp/m-p/22980/highlight/true#M9872

我还尝试了各种方法,比如用"StartsWith"代替"="等,但似乎都不起作用。

这似乎是一个常见的问题,所以我相信有人已经想出了解决方案,但我找不到任何直接或具体的方法,所以任何想法或建议都将不胜感激。

您的SelectedListItemID可能是一个字符串,而不是Power应用程序中的Int。像ID = Int(SharePointIntegration.SelectedListItemID)一样使用它。

反之亦然,如果您试图避免委派问题,请使用textField = Text(numberValue)搜索带有数字的文本字段

绕过委派需要一些思考。

  1. 确保您的函数和数据类型是可删除的
  2. 询问用户(或用户经理/冠军等(应用程序的目标是什么。
    • 用户很少需要在应用程序中滚动2000多条记录
    • 只要问正确的问题,你就可以找到一个额外的列来过滤,这将使记录的数量减少一个数量级。
      • 提示包括:statusphase
  3. 当其他一切都失败了,你的用户/经理/冠军说";我们需要他们"全部";,然后使用Concurrent()函数获取所有记录
    • 尝试以下操作:
Concurrent(
Collect(col1,
Filter(LIST, 
And(
ID_COPY >= 1,
ID_COPY <= 2000
)
)),
Collect(col2,
Filter(LIST, 
And(
ID_COPY >= 2001,
ID_COPY <= 4000
)
)),
Collect(col3,
Filter(LIST, 
And(
ID_COPY >= 4001,
ID_COPY <= 6000
)
))
);
ClearCollect(colAll, col1, col2, col3)

注意事项:

  • 性能将受到打击。与其说是来自Collect(),不如说是来自于将colAll拖到代码和Galleries
  • 不幸的是,可爱的ID专栏并不令人愉快。因此,您需要制作一个ID_COPY列并过滤掉它。
    • IIRC,它必须是number数据类型才能工作
  • 您需要确保将记录的数量硬编码到应用程序中。
    • 研究这个
  • 您还可以使用Power Automate Flow来解决一些委派问题,但它需要额外的开发、滞后,并引入了一套全新的工具

相关内容

  • 没有找到相关文章

最新更新