Функция UpdateContext

Применимо к: приложениям на основе холста

Создает или обновляет переменные контекста текущего экрана.

Обзор

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

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

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

Описание

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

  • Если вы указали имя ранее определенной переменной, функция UpdateContext задает для нее указанное значение.
  • Если вы указали имя еще не созданной переменной, функция UpdateContext создает переменную с этим именем и задает для нее указанное значение.
  • Если вы определили переменную ранее, но не указали ее конкретно в этой формуле UpdateContext, ее значение не изменяется.

Переменные контекста неявно создаются с помощью функции UpdateContext или Navigate. Для этого не требуется явное объявление. Если удалить все ссылки UpdateContext и Navigate на переменную контекста, эта переменная исчезнет. Чтобы очистить переменную, задайте в качестве ее значения результат функции Blank.

Чтобы просмотреть значения, определения и сведения об использовании переменных, перейдите в среде разработки к меню "Файл", а затем откройте представление "Переменные".

Ссылку на переменную контекста в формуле можно добавить на основе имени столбца этой переменной. Например, функция UpdateContext( { ShowLogo: true } ) создает переменную контекста с именем ShowLogo и задает для нее значение true. Затем значение этой переменной контекста можно использовать по имени ShowLogo в формуле. Вы можете написать переменную контекста ShowLogo как формулу для свойства Visible элемента управления "Изображение", а затем показывать или скрывать этот элемент в зависимости от заданного значения переменной (true или false).

Как показано далее в примерах, переменные контекста могут содержать несколько типов данных, в том числе:

  • одиночное значение;
  • запись;
  • таблицу;
  • ссылку на объект;
  • любой результат формулы.

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

Каждая переменная контекста привязана к конкретному экрану. Если вы определили переменную контекста на одном экране, а затем хотите изменить ее с другого экрана, необходимо создать формулу на основе функции Navigate. Или можно использовать глобальную переменную.

Функция UpdateContext не возвращает никакого значения, и ее можно использовать только в формуле управления поведением.

Синтаксис

UpdateContext( UpdateRecord )

  • UpdateRecord — обязательный аргумент. Запись, содержащая имя хотя бы одного столбца и его значение. Переменная контекста создается или обновляется для каждого указанного столбца и значения.

UpdateContext( { ContextVariable1: Value1 [, ContextVariable2: Value2 [, ... ] ] } )

  • ContextVariable1 — обязательный аргумент. Имя создаваемой или обновляемой переменной контекста.
  • Value1 — обязательное значение. Значение, присваиваемое переменной контекста.
  • ContextVariable2: Value2 и т. д. — необязательные параметры. Дополнительные переменные контекста, которые нужно создать, и их значения.

Примеры

Формула Описание Результат
UpdateContext( { Counter: 1 } ) Создает или изменяет переменную контекста Counter, задавая для нее значение 1. Переменная контекста Counter имеет значение 1. Вы можете добавить ссылку на эту переменную по имени Counter в формуле.
UpdateContext( { Counter: 2 } ) Изменяет значение переменной контекста Counter из предыдущего примера на 2. Переменная контекста Counter имеет значение 2.
UpdateContext( { Name: "Lily", Score: 10 } ) Создает или изменяет переменные контекста Name и Score, задавая для них значения Lily и 10 соответственно. Переменная контекста Name имеет значение Lily, а переменная Score — 10.
UpdateContext( { Person: { Name: "Milton", Address: "1 Main St" } } ) Создает или изменяет переменную контекста Person, задавая для нее запись в качестве значения. Запись содержит два столбца: Name и Address. Столбец Name имеет значение Milton, а столбец Address — 1 Main St. Переменной Person присваивается значение записи { Name: "Milton", Address: "1 Main St" } }.

Добавьте ссылку на эту запись в целом по имени Person или на ее отдельный столбец с помощью параметра Person.Name или Person.Address.
UpdateContext( { Person: Patch( Person, {Address: "2 Main St" } ) } ) В сочетании с функцией Patch позволяет обновить переменную контекста Person, задав для столбца Address значение 2 Main St. Переменной Person теперь присваивается значение записи { Name:"Milton", Address:"2MainSt" } }.

Пошаговый пример 1

  1. Присвойте экрану по умолчанию имя Source и добавьте еще один экран с именем Target.

  2. На экране Source добавьте две кнопки и задайте для их свойств Text значения English и Spanish.

  3. В качестве значения свойства OnSelect кнопки English задайте это выражение:
    Navigate(Target, ScreenTransition.Fade, {Language:"English"})

  4. В качестве значения свойства OnSelect кнопки Spanish задайте это выражение:
    Navigate(Target, ScreenTransition.Fade, {Language:"Spanish"})

  5. На экране Target добавьте метку и задайте в качестве значения ее свойства Text это выражение:
    If(Language="English", "Hello!", "Hola!")

  6. На экране Target перейдите на вкладку Вставка, выберите Фигуры и нажмите кнопку со стрелкой "Назад".

  7. Задайте для свойства OnSelect стрелки "Назад" эту формулу:
    Navigate(Source, ScreenTransition.Fade)

  8. На экране Source нажмите клавишу F5, а затем нажмите кнопку для любого языка.

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

  9. Нажмите кнопку со стрелкой "Назад", чтобы вернуться на экран Source, и нажмите кнопку для другого языка.

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

  10. Нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.

Пошаговый пример 2

  1. Откройте приложение на основе холста, в котором вы хотите использовать эту формулу.
  2. Добавьте новый пустой экран, выбрав Новый экран на панели команд.
  3. Добавьте кнопку и задайте следующую формулу в качестве значения свойства OnSelect:
    UpdateContext( { Name: "Lily", Score: 10 } )