#powerapps
#powerapps
Вопрос:
У меня есть кнопка с именем Button_Import, при нажатии на эту кнопку я уведомлю пользователя о том, что импорт может занять некоторое время, затем он вызовет фабрику данных (через логические приложения), для завершения которой требуется несколько часов.
Проблема в том, что весь этот процесс нажатия занимает всего несколько секунд, после чего кнопка снова будет включена.
Моя цель — намеренно отключить кнопку примерно на 30 секунд, чтобы гарантировать, что пользователь не будет дважды щелкать, следовательно, избегая возможного повторного вызова фабрики данных.
Как это реализовать?
Ответ №1:
Вы можете использовать управление таймером и пару переменных для реализации этой логики. В элементе управления onSelect вашей кнопки вы можете использовать что-то похожее на приведенное ниже выражение:
UpdateContext({ startTimer:true, buttonDisabled:true });
Notify("Imported started, it will take some time...");
MyDataFactoryProcess.Run(...)
И режим отображения кнопки будет использовать buttonDisabled
переменную, чтобы определить, следует ли ее отключить:
If(!buttonDisabled, DisplayMode.Edit, DisplayMode.Disabled)
В элементе управления таймером вы можете сделать его зависимым от startTimer
переменной, и когда он закончится, он сбросит как эту, так и переменные buttonDisabled. Это будут свойства таймера для обновления и их соответствующие значения:
Duration: 30000 // 30 seconds
Start: startTimer
OnTimerEnd: UpdateContext({ buttonDisabled:false, startTimer:false })
Таким образом, при нажатии кнопки она отключится сама и запустит таймер; когда таймер закончится (по истечении времени, указанного в его свойстве Duration), он включит кнопку и сбросит переменную startTimer, чтобы при повторном нажатии кнопки таймер мог запуститься еще раз.