Элементы управления Карта являются стандартными блоками элементов управления Форма редактирования и Форма отображения. Форма представляет всю запись, а каждая карта представляет одно поле этой записи.

Самый простой способ взаимодействия с картами заключается в использовании области справа при выборе элемента управления формы в рабочей области конструирования. В этой области можно выбрать поля для отображения, способ отображения каждого из них и изменить порядок полей.

Чтобы начать работу с картами, см. статьи о добавлении формы и формах данных. В оставшейся части этой статьи приведены более подробные сведения о принципе действия карт, а также об их настройке и создании.

Предопределенные карты

В PowerApps предусмотрен предопределенный набор карт для строк, чисел и других типов данных. В области справа можно просмотреть доступные варианты и изменить карту, используемую для поля.

В этом примере выбрана однострочная текстовая карта, но текст URL-адреса не вмещается в одной строке. Давайте изменим тип карты на многострочную текстовую, чтобы предоставить пользователям больше места для редактирования:

Кроме того, видно, что несколько полей этого источника данных не отображаются. Их можно отображать и скрывать, выбрав значок глаза:

Настройка карточки

Карты содержат другие элементы управления. Пользователь вводит данные в стандартном элементе управления Текстовое поле, который можно добавить на вкладке Вставка.

Давайте рассмотрим несколько примеров изменения вида карты с помощью элементов управления.

  1. Сначала давайте вернемся к недавно вставленной карте для поля SecurityCode. Щелкните или коснитесь ее один раз, чтобы выбрать.

  2. Выберите элемент управления Текстовое поле в карте, коснувшись или щелкнув его.

  3. Переместите этот элемент управления в карте, перетащив рамку выделения, и измените его размер, перетаскивая маркеры, расположенные по краям рамки выделения.

    Вы можете изменять и перемещать элементы управления, а также выполнять с ними другие действия. Но их невозможно удалить, не разблокировав. В следующем разделе описано, как разблокировать карту.

  4. На вкладке Вставка в меню Фигуры вставьте один или несколько элементов управления на карту, например эту звездочку.

    Теперь этот новый элемент управления является частью карты и будет перенесен вместе с ней, например, при изменении порядка карт в форме.

Давайте рассмотрим другой пример, в котором в элементе управления Изображение отображается изображение вместо URL-адреса изображения в элементе управления Текстовое поле, как показано на этом рисунке.

  1. На вкладке Вставка добавьте элемент управления "Изображение" на карте ImageURL.

  2. В строке формул задайте для свойства Image этого элемента управления значение TextBox.Text, где TextBox представляет собой имя элемента управления Текстовое поле, содержащего URL-адрес.

    Совет. Нажмите клавишу ALT для отображения имени каждого элемента управления.

    Теперь изображения отображаются, и мы можем изменить их URL-адреса. Обратите внимание, что можно было бы использовать Parent.Default в качестве значения свойства Image, но оно бы не обновилось после ввода нового URL-адреса.

  3. То же можно сделать на втором экране этого приложения, где используется элемент управления Форма отображения для отображения сведений о записи. Здесь нужно скрыть метку (задайте для свойства Visible элемента управления "Метка" (не для карты) значение false), так как пользователь не будет изменять URL-адрес на этом экране.

Разблокировка карточки

Кроме того, что карты содержат элементы управления, они сами являются элементами управления и подобно другим элементам управления имеют свойства и формулы. Если нужно отобразить поле в форме, область справа автоматически создает карту и необходимые формулы. Эти формулы отображаются в области Дополнительно на вкладке Представление.

Одно из самых важных свойств карты, DataField, отображается сразу. Это свойство указывает отображаемые поля источника данных, которые можно изменить на этой карте.

В представлении Дополнительно на большом баннере в верхней части указано, что свойства этой карты заблокированы. Значок блокировки также отображается рядом со свойствами DataField, Default и DisplayName. Эти формулы созданы областью справа, а блокировка предотвращает случайное изменение этих свойств.

Щелкните или коснитесь баннера в верхней части, чтобы разблокировать карту и изменить эти свойства.

Давайте изменим свойство DisplayName, чтобы вставить пробел между Asset и ID. Таким образом мы изменим автоматически созданные значения. В области справа эта карта имеет другую метку.

Теперь мы можем управлять этой картой и изменять ее в соответствии с собственными потребностями. Но мы не можем изменить представление карты (например, однострочный или многострочный текст), подобно тому, как мы делали раньше. Мы превратили предопределенную карту в пользовательскую и теперь можем управлять ей.

Имейте в виду, что после разблокирования карту невозможно обратно заблокировать. Чтобы вернуться к заблокированному состоянию, удалите карту и снова вставьте ее в области справа.

Взаимодействие с формой

После разблокирования карты можно изменить способ ее взаимодействия с формой, содержащей ее.

Ниже приведены некоторые рекомендации о взаимодействии элементов управления с картами и карт с формой. Это только рекомендации. Как и в случае с любым элементом управления в PowerApps, вы можете создавать формулы, ссылающиеся на любой другой элемент управления в PowerApps. То же касается карт и элементов управления на них. Приложение можно создать множеством способов. Реализуйте свой творческий потенциал!

Свойство DataField

Самое важное свойство карты — DataField. Это свойство отвечает за проверку, за обновляемое поле и другие аспекты карты.

Ввод сведений

В качестве контейнера форма делает запись ThisItem доступной для всех карт, содержащихся в ней. Эта запись содержит все поля в текущей записи.

Свойству Default всех карт нужно присвоить значение ThisItem.FieldName. В некоторых случаях может понадобиться преобразовать это значение при передаче. Например, вам может потребоваться отформатировать строку или преобразовать значение, чтобы использовать его в другом языке.

Каждый элемент управления в карте должен ссылаться на Parent.Default, чтобы получить значение поля. Эта стратегия обеспечивает определенный уровень инкапсуляции карты, чтобы свойство карты Default можно было изменить, не меняя ее внутренние формулы.

По умолчанию свойства DefaultValue и Required можно получить из метаданных источника данных на основе свойства DataField. Вы можете переопределить эти формулы собственной логикой, интегрировав метаданные источника данных, используя функцию DataSourceInfo.

Вывод сведений

После того как пользователь изменит записи с помощью элементов управления в картах, функция SubmitForm сохраняет эти изменения в источнике данных. При выполнении этой функции элемент управления формы считывает значения свойства DataField каждой карты, чтобы определить поля, которые следует изменить.

Кроме того, элемент управления формы также считывает значение свойства Update каждой карты. Это значение будет храниться в источнике данных для этого поля. На этом этапе можно применить еще одно преобразование, например обратить преобразование, примененное в формуле карты Default.

Свойство Valid можно получить из метаданных источника данных на основе свойства DataField. Кроме того, учитывается свойство Required, а также то, содержит ли свойство Update значение. Если свойству Update назначено недопустимое значение, свойство Error отображает понятное сообщение об ошибке.

Если свойство DataField карты пустое, карта является всего лишь контейнером элементов управления. При отправке формы свойства Valid и Update не задействованы.

Разбор примера

Давайте рассмотрим элементы управления, входящие в базовую карту ввода данных. Пространство между элементами управления было увеличено для более четкого отображения каждого из них:

Удерживайте клавишу ALT, чтобы показать имена элементов управления этой карты.

Эта карта действует за счет четырех элементов управления:

Имя Тип Описание
TextRequiredStar Элемент управления Метка Отображает звездочку, которая часто используется в формах ввода данных, чтобы указать, что поле является обязательным.
TextFieldDisplayName Элемент управления Метка Отображает понятное имя этого поля. Это имя может отличаться от имени на схеме источника данных.
InputText Элемент управления Текстовое поле Отображает начальное значение поля, которое пользователь может изменить.
TextErrorMessage Элемент управления Метка Отображает понятное сообщение об ошибке для пользователя при возникновении проблемы с проверкой. Кроме того, этот элемент управления гарантирует наличие значения в поле, если это значение является обязательным.

Чтобы заполнить эти элементы управления данными, их свойства можно получить из свойств карты, применяя следующие основные формулы. Обратите внимание, что ни одна из этих формул не относится к определенному полю. Вместо этого все данные можно получить из карты.

Свойство элемента управления Формула Описание
TextRequiredStar.Visible Parent.Required Звездочка появляется, только если поле является обязательным. Требуется формула, которую указывает пользователь или которую можно получить из метаданных источника данных.
TextFieldDisplayName.Text Parent.DisplayName Элемент управления "Текстовое поле" отображает понятное имя, которое предоставляет пользователь или метаданные источника данных и которое задается в свойстве карты DisplayName.
InputText.Default Parent.Default Элемент управления "Текстовое поле" изначально отображает значение поля из источника данных, указанное в значении карты по умолчанию.
TextErrorMessage.Text Parent.Error При возникновении проблемы проверки свойство карты Error выдает соответствующее сообщение об ошибке.

Чтобы получить сведения из этих элементов управления и передать их обратно в источник данных, используйте следующие основные формулы:

Имя элемента управления Формула Описание
DataCard.DataField ApproverEmail Имя поля, которое пользователь может отобразить и изменить в этой карте.
DataCard.Update InputText.Text Значение, которое следует проверить и передать обратно в источник данных при выполнении SubmitForm.