Canvas PowerApp 表单无法从自定义连接器获取字段,从 REST 返回表格数据API

Canvas PowerApp Form unable to get fields from Custom Connector returning tabular data from REST API

我创建了一个 自定义连接器 我们的 REST API returns 表格数据。我将它用作 canvas powerapp 中的数据源,它将来自自定义连接器的记录存储到 集合 中。 Gallery 将此集合用作数据源,成功显示每个项目的项目和属性。但是,当我尝试 create an Edit Form 使用 集合 作为数据源时,它无法访问这些字段。直接使用 自定义连接器 作为数据源也不起作用。

在来自@aorphan 的 this answer 中,我读到您可以在表单 中使用自定义连接器,只要它们 return tables行动。据我所知,集合的内容是表格数据:

甚至集合的列也可以作为图库显示的项目的属性进行访问:

但是,即使将集合设置为新编辑表单的数据源后,也无法从数据源添加任何字段:

以防万一我的数据需要一些更丰富的定义才能被表单正确解释,由我的 API 编辑的 JSON return 看起来像这样:

    {
        "quotes": [
            {
                "quote_pk": 347,
                "shipment_name": "test add leg",
                "organization_ff_name": "LIFE",
                "quote_id": "1234",
                "effective_until": "2020-05-10",
                "eta": "2020-05-14T12:00:00Z",
                "price": 100.0,
                "quote_status": 2
            },
            {
                "quote_pk": 345,
                "shipment_name": "test modal review",
                "organization_ff_name": "LIFE",
                "quote_id": "123",
                "effective_until": "2020-05-11",
                "eta": "2020-05-22T12:00:00Z",
                "price": 1749.94,
                "quote_status": 6
            }
        ]
    }

我的自定义连接器的定义如下:

swagger: '2.0'
info: {title: some title, description: some description, version: '1.0'}
host: server.domain.com
basePath: /organizations/endpoint/
schemes: [https]
consumes: []
produces: []
paths:
  /organizations/endpoint/shipment_quotes/: {}
  /shipment_quotes/:
    get:
      responses:
        '200':
          description: default
          schema:
            type: object
            properties:
              quotes:
                type: array
                items:
                  type: object
                  properties:
                    quote_pk: {type: integer, format: int32, description: quote_pk}
                    shipment_name: {type: string, description: shipment_name}
                    organization_ff_name: {type: string, description: organization_ff_name}
                    quote_id: {type: string, description: quote_id}
                    effective_until: {type: string, description: effective_until}
                    eta: {type: string, description: eta}
                    price: {type: number, format: float, description: price}
                    quote_status: {type: integer, format: int32, description: quote_status}
                description: quotes
      summary: peration summary
      description: operation description
      operationId: operationId
      parameters:
      - {name: Content-Type, in: header, required: false, type: string}
      - {name: Accept, in: header, required: false, type: string}
definitions: {}
parameters: {}
responses: {}
securityDefinitions: {}
security: []
tags: []

请帮助我获得正确的数据源,以便表单能够添加其字段,或者至少让我知道,如果由于某种原因无法做到这一点,我可以继续。

正式,集合不能用作 PowerApps 中表单控件的数据源。你的努力令人钦佩,看起来你几乎什么都试过了,所以我会告诉你我的小秘密。 它可能不受官方支持,因此使用风险自负。

  1. 创建自定义连接器的响应集合(您已完成)
  2. 添加图库控件并将其 Items 属性 设置到集合(您已经完成)
  3. 添加一个编辑表单控件并将其 DataSource 属性 设置到集合(您已经完成)
  4. 点击三个小点然后Add Custom Card
  5. 向自定义卡片添加一个 TextBox 控件。
  6. 将文本框 Default 属性 设置为 gallery.Selected.X,其中 "X" 是您要在表单中编辑的值。
  7. 为您希望捕获的每个表单域重复步骤 4-7。
  8. 在表单中创建一个 "Submit" 按钮,其中 Patches/UpdateIf 是集合 然后 调用您的 POST (或 PUT) 方法从自定义连接器将编辑修补回您的数据源。

    8a。我只在你的 swagger 文件中看到一个 GET 请求。您(显然)需要一个 POST/PUT 来从 集合中获取数据备份 您的数据源。

    8b。当您将 "approved" DataSource 用于 Form 控件时,这个 "wrapper" 可能是 PowerApps 为您处理的。

注意:您的表单将在 PowerApps 工作室中显示 "No data source",但您的用户不会看到它。

这是实际操作:

有多大帮助?