来自多个共享点列表的单个图库(所有相同字段)

时间:2018-12-12 07:06:59

标签: sharepoint logic sharepoint-online powerapps powerapps-formula

当前我的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)

,错误如下图所示:

error

我的“ PO列表” 有一列称为状态的列,其类型为单行文本,而在“ PO 2” 中,状态列的类型为Choices。由于我无法更改数据类型,因此将列表列名称之一更改为“状态0” 。 现在,这两个列表之间的唯一区别是,一个列表具有一些额外的列,而其他列表则没有。 但是当我尝试执行ti时,仍然出现此“不兼容类型” 错误。

2 个答案:

答案 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中具有以下两个列表:

  • 列表01
    • 标题(文本)
    • 状态(文本)
  • 列表02
    • 标题(文本)
    • 状态(选择)

然后,您可以使用以下表达式创建包含两个列表内容的集合:

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的表达式/控件中使用。