【问题标题】:PowerApps Filter - Table name as a variablePowerApps 筛选器 - 表名作为变量
【发布时间】:2020-10-22 12:18:17
【问题描述】:

我的 PowerApp 应用程序根据用户详细信息决定要过滤的共享点列表。例如,共享点列表会根据用户所属的区域而变化。

分享点列表: 销售表欧盟 美国销售表

User 和要使用的 Sharepoint 列表的映射位于另一个名为 UserSettings 的表中。

首先,我查看了 UserSetting 列表,根据用户返回了 SPListName (TableName)。这保存在一个变量 SelectedDS by

Set(SelectedDS, LookUp(UserSPLMapping, Title = User().Email, SPListName))

我应该如何将表名传递给基于这个变量名的过滤函数 - SelectedDS。

SortByColumns(Filter(SelectedDS, StartsWith(Title, TextSearchBox1.Text)), "Title", If(SortDescending1, Descending, Ascending))

当我使用这个变量时,我没有填充画廊,但是当我硬编码表名时,画廊被填充了。

你能帮我解决我的问题吗?

【问题讨论】:

    标签: powerapps


    【解决方案1】:

    我已经成功地在 DEV/PROD 场景中使用表单控件完成了此操作,但它有问题并且有一些限制,但您可以将其调整为 Gallery 控件:

    示例:

    • 两个 Sharepoint 列表之间的列名必须完全相同
      • 您不能在 PowerApps 中动态交换表格并期望 Gallery/Form 知道如何显示字段。

    我通常如下使用这种场景:

    • 具有"Dev""Prod" 值的单选按钮 (rdoEnv)
    • 开始画面的OnVisible
    If(
        rdoEnv.Selected.Value = "Dev", 
            Set(varEnv, "Dev"),
            Set(varEnv, "Prod")
    )
    
    • 那么对于 Form 控件的 DataSource 属性:
    If(varEnv="Dev", SharepointList1, SharepointList2)
    

    我也成功地将它与Patch() 语句一起使用:

    Patch(
        If(
            varEnv = "Dev",
            SharepointList1,
            varEnv = "Prod",
            SharepointList2
        ),
        Defaults(
            If(
                varEnv = "Dev",
                SharepointList1,
                varEnv = "Prod",
                SharepointList2
            )
        ),
        {
            exactColumn1: "test",
            exactColumn2: "Yup"
        }
    )
    

    这里有一个(荒谬的)警告......如果您想更改列名/数据类型/等。在 Sharepoint1 中(反之亦然),您需要将 Form 控件的 DataSource 设置为 Sharepoint1,进行更改,然后将其设置回上面的 If(dev/prod 语句。

    有点老套,但我已经为一些 PowerApps 生产了它。开发人员可以在 DEV/PROD 数据源之间测试 1 个应用程序,这很不错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2020-12-07
      • 2021-11-16
      • 2016-01-29
      • 1970-01-01
      相关资源
      最近更新 更多