我最近在其他人使用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)
搜索带有数字的文本字段
绕过委派需要一些思考。
- 确保您的函数和数据类型是可删除的
- 询问用户(或用户经理/冠军等(应用程序的目标是什么。
- 用户很少需要在应用程序中滚动2000多条记录
- 只要问正确的问题,你就可以找到一个额外的列来过滤,这将使记录的数量减少一个数量级。
- 提示包括:
status
、phase
等
- 提示包括:
- 当其他一切都失败了,你的用户/经理/冠军说";我们需要他们"全部";,然后使用
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
数据类型才能工作
- IIRC,它必须是
- 您需要确保将记录的数量硬编码到应用程序中。
- 研究这个
- 您还可以使用Power Automate Flow来解决一些委派问题,但它需要额外的开发、滞后,并引入了一套全新的工具