当前我的powerapp拥有一个基于单个共享点列表的Gallery,但是我想在我的应用程序上实现一个Gallery,该画廊应显示3个不同共享点列表中的项目(均具有相同的列/字段)< / strong>,并且我正在厨房上使用过滤器,以便用户可以在框中键入内容并仅获得过滤后的响应,而不是显示所有数据
请帮助
我已经在gallery1.items中使用此公式:
Search(“ PO列表”,TextSearchBox.Text,“ Branch_x0020_Code”) 例如,考虑到我有2个列表:列表1和列表2,现在当用户在搜索框(即TextSearchbox)中搜索时,我希望图库过滤数据,其中“ Branch_x0020_Code”等于来自两个列表的搜索数据
编辑1:这是我尝试实现的公式: 公式: ClearCollect(Aitems,'PO list',PO 2)
,错误如下图所示:
我的“ PO列表” 有一列称为状态的列,其类型为单行文本,而在“ PO 2” 中,状态列的类型为Choices。由于我无法更改数据类型,因此将列表列名称之一更改为“状态0” 。 现在,这两个列表之间的唯一区别是,一个列表具有一些额外的列,而其他列表则没有。 但是当我尝试执行ti时,仍然出现此“不兼容类型” 错误。
答案 0 :(得分:1)
图库无法一次直接显示来自多个数据源的结果。但是,实现此目的的一种方法是,首先将各个列表中的数据收集到一个collection中,然后将图库绑定到该集合。
例如,您可以在应用程序的OnStart属性或“更新”按钮的OnSelect属性中执行此操作:
ClearCollect( CombinedListsCollection,
List1, List2, List3 )
然后将gallery.items绑定到集合:
Search( CombinedListsCollection, TextInput.Text, [columns])
另一种实现方法是在用户搜索时动态收集一组经过过滤的记录。例如,在搜索框的“文本输入”控件上,将“ OnChange”属性设置为:
ClearCollect(CombinedFilteredLists,
Filter(List1, StartsWith(Title, TextInput1.Text)),
Filter(List2, StartsWith(Title, TextInput1.Text)))
然后将图库项目设置为CombinedFilteredLists。
如上例所示,使用包装在Filter()中的StartsWith()来委派大型SharePoint列表。
以下是实际操作的效果: Combining two SharePoint lists into one Gallery in PowerApps
答案 1 :(得分:0)
如果两个列表的列/字段完全相同,则Ryan的解决方案将起作用。但是,如果某些字段(名称或类型)不同,则可以在PowerApps中使用one of the many functions that can help you change the "table shapes"。
在您的特定情况下,如果您在SharePoint中具有以下两个列表:
然后,您可以使用以下表达式创建包含两个列表内容的集合:
ClearCollect(
ItemsCollection,
ShowColumns(
AddColumns(List01, "StatusText", Status),
"Title", "StatusText"));
Collect(
ItemsCollection,
ShowColumns(
AddColumns(List02, "StatusText", Status.Value),
"Title", "StatusText"));
上面的表达式在两个列表上都创建一个名为'StatusText'的新列(*),将Status列的类型标准化为文本,然后从两个列表中选择Title和StatusText列,从而确保架构(字段的类型)相同。
(*)AddColumns函数不会在SharePoint列表中创建任何其他列。而是返回一个新的“虚拟”表,该表可在PowerApps的表达式/控件中使用。