Разбиране на формулярите на приложение на платно
Добавете три типа контроли към приложение за платно, така че потребителят да може да прегледа даден запис, да покаже подробности за този запис и да редактира или създаде запис:
Дейност | Контрола | Описание |
---|---|---|
Преглед за запис | Контрола Галерия | Филтрирайте, сортирайте, търсейте и превъртайте през записи в източник на данни и изберете конкретен запис. Показвайте само няколко полета от всеки запис, за да показвате няколко записа наведнъж, дори и на малък екран. |
Показване на подробности за запис | Контрола Показване на формуляр | За един запис покажете много или всички полета в този запис. |
Създаване или редактиране на запис | Контрола Редактиране на формуляр | Актуализирайте едно или повече полета в един запис (или създайте запис, започвайки със стойности по подразбиране) и ги запазете обратно в базисния източник на данни. |
Поставете всяка контрола на различен екран, за да ги разграничите по-лесно:
Както е описано в тази тема, комбинирайте тези контроли с формули, за да създадете цялостното потребителско изживяване.
Предварителни изисквания
- Регистрирайте се за Power Apps, след което влезте, като използвате същите идентификационните данни, с които се регистрирахте.
- Научете как да конфигурирате контрола в Power Apps.
Разгледайте генерирано приложение
Power Apps може автоматично да генерира приложение въз основа на източник на данни, който сте посочили. Всяко приложение съдържа три екрана с описаните по-рано контроли и формули, които ги свързват. Стартирайте тези приложения „извън кутията“, персонализирайте ги за вашите конкретни цели или проучете как работят, за да можете да научите полезни понятия, които се прилагат за вашите собствени приложения. В следващите раздели инспектирайте екраните, контролите и формулите, които задвижват генерирано приложение.
Преглед на екрана
Този екран съдържа следните ключови формули:
Control | Поддържано поведение | Формула |
---|---|---|
BrowseGallery1 | Показване на записи от източник на данни Активи. | Свойството елементи на галерията е зададено на формула, която се основава на източник на данни Активи. |
ImageNewItem1 | Показване на екран Редактиране и създаване с всяко поле, зададено на стойност по подразбиране, така че потребителят да може лесно да създаде запис. | Свойството OnSelect на изображението е зададено на тази формула: NewForm( EditForm1 ); Navigate( EditScreen1, None ) |
NextArrow1 (в галерията) | Показване на екран Подробности, за да видите много или всички полета на текущо избрания запис. | Свойството OnSelect на стрелката е зададено на тази формула: Navigate( DetailScreen1, None ) |
Основното управление на този екран, BrowseGallery1, обхваща по-голямата част от областта на екрана. Потребителят може да премине през галерията, за да намери конкретен запис, който да показва повече полета или да се актуализира.
Задайте свойството Елементи на галерия за показване на записи от източник на данни в нея. Например, задайте това свойство на Активи за показване на записи от източник на данни с това име.
Бележка
В генерирано приложение, Елементи е зададено на значително по-сложна формула по подразбиране, така че потребителят да може да сортира и търси записи. Ще научите как да изградите тази формула по-късно в тази тема; по-опростената версия е достатъчна засега.
Вместо да намери запис, който да се покаже или редактира, потребителят може да създаде запис, като избере символа "+" над галерията. Създайте този ефект, като добавите контрола Изображение, която показва символ "+" в нея, и задайте свойството й OnSelect на тази формула:
NewForm( EditForm1 ); Navigate( EditScreen1, None )
Тази формула отваря екрана Редактиране и създаване, който разполага с контрола Редактиране на формуляр с име EditForm1. Формулата също превключва тази форма в режим Създаване, в който формата показва стойности по подразбиране от източник на данни, така че потребителят да може лесно да създаде запис от нулата.
За да прегледате контрола, който се появява в BrowseGallery1, изберете контрола в първия раздел на тази галерия, който служи като шаблон за всички останали секции. Например изберете средната контрола етикет от левия ръб:
В този пример контролите свойството Текст е зададено на ThisItem.AssignedTo, което е поле в източник на данни Активи. Свойството Текст на останалите три контроли етикет в галерията са зададени на подобни формули и всяка контрола показва различно поле в източник на данни.
Изберете контролата форма (стрелката) и потвърдете, че нейното свойство OnSelect е зададено на тази формула:
Navigate( DetailScreen1, None )
Ако потребителят намери запис в BrowseGallery1, потребителят може да изберете стрелката за този запис, за да покаже повече информация за него DetailScreen1. Избирайки стрелка, потребителят променя стойността на свойството Избрано на BrowseGallery1. В това приложение това свойство определя в кой запис се появява не само DetailScreen1, но също така, ако потребителят реши да актуализира записа, екран Редактиране и създаване.
Екран с подробности
Този екран съдържа следните ключови формули:
Control | Поддържано поведение | Формула |
---|---|---|
DetailForm1 | Показване на запис от източника на данни Активи | Задайте свойството Източник на данни на Активи. |
DetailForm1 | Определя кой запис да се покаже. В генерирано приложение показва записа, който потребителят е избрал в галерията. | Задайте свойството Елемент на тази контрола на тази стойност: BrowseGallery1.Selected |
Контроли Карта | В контрола Показване на формуляр показва едно поле в запис. | Задайте свойството DataField на името на поле, затворено в двойни кавички (например, „Име”). |
ImageBackArrow1 | Когато потребителят избере това управление, се отваря BrowseScreen1. | Задайте свойството OnSelect на тази формула: Back() |
ImageDelete1 | Когато потребителят избере това управление, изтрива запис. | Задайте свойството OnSelect на тази формула: Remove( Assets, BrowseGallery1.Selected ) |
ImageEdit1 | Когато потребителят избере това управление, отваря екрана Редактиране и създаване към текущия запис. | Задайте свойството OnSelect на тази формула: Navigate( EditScreen1, None ) |
В горната част на екрана три изображения седят извън DetailForm1 и действат като бутони, оркестрирайки между трите екрана на приложението.
DetailForm1 доминира на този екран и показва записа, който потребителят е избрал в галерията (защото свойството Елемент на формуляра е зададено на BrowseGallery1.Selected). Свойството Източник на данни на формуляра предоставя също метаданни за източник на данни, като удобно за потребителя екранно име за всяко поле.
DetailForm1 съдържа няколко контроли карта. Можете да изберете или самата контрола карта, или контролата, която съдържа, за да откриете допълнителна информация.
Свойството DataField на контролата карта определя кое поле показва картата. В този случай това свойство е настроено на AssetID. Картата съдържа контрола етикет, за която свойството Текст е настроено на Parent.Default. Този контрол показва стойност По подразбиране за картата, която се задава чрез свойството DataField.
В генерирано приложение контролите карта са заключени по подразбиране. Когато картата е заключена, не можете да промените някои свойства, като например DataField и лентата с формули не е налична за тези свойства. Това ограничение помага да се гарантира, че вашите персонализации не нарушават основната функционалност на генерираното приложение. Можете обаче да промените някои свойства на картата и нейните контроли в десния панел:
В десния панел можете да изберете кои полета да се показват и в кой вид контрол да се показва всяко поле.
Екран за редактиране/създаване
Този екран съдържа следните ключови формули:
Control | Поддържано поведение | Формула |
---|---|---|
EditForm1 | Показване на запис от източника на данни Активи. | Задайте свойството Източник на данни на Активи. |
EditForm1 | Определя кой запис да се покаже. В генерирано приложение показва записа, който потребителят е избрал в BrowseScreen1. | Задайте свойството Елемент на тази стойност: BrowseGallery1.Selected |
Контроли Карта | В контролата Редактиране на формуляр предоставя контроли, така че потребителят да може да редактира едно или повече полета в запис. | Задайте свойството DataField на името на поле, затворено в двойни кавички (например, „Име”). |
ImageCancel1 | Когато потребителят избере това управление, изхвърля всички промени в хода и отваря екрана Подробности. | Задайте свойството OnSelect на тази формула: ResetForm( EditForm1 ); Back() |
ImageAccept1 | Когато потребителят избере този контрол, изпраща промени в източник на данни. | Задайте свойството OnSelect на тази формула: SubmitForm (EditForm1) |
EditForm1 | Ако промените са приети, се връща към предишния екран. | Задайте свойството OnSuccess на тази формула: Back() |
EditForm1 | Ако промените не се приемат, останете на текущия екран, така че потребителят да може да отстрани всички проблеми и да се опита да изпрати отново. | Оставете свойството OnFailure празно. |
LblFormError1 | Ако промените не се приемат, показва съобщение за грешка. | Задайте свойството текст на тази стойност: EditForm1.Error |
Както на екрана Подробности контрола на формуляр, назована EditForm1, доминира екрана Редактиране и създаване. В допълнение свойството Елемент на EditForm1 е зададено на BrowseGallery1.Selected, така формулярът показва записа, който потребителят е избрал BrowseScreen1. Докато екранът Подробности показва всяко поле като само за четене, потребителят може да актуализира стойността на едно или повече полета, като използва контролите в EditForm1. Тя също използва свойството Източник на данни за достъп до метаданни за този източник на данни, като удобното за потребителя екранно име за всяко поле и мястото, където промените трябва да бъдат запазени.
Ако потребителят избере иконата „X”, за да отмени актуализация, функцията ResetForm отхвърля всички незапазени промени, а функцията Назад отваря екрана Подробности екран. И двата екрана Подробности и Редактиране и създаване показват един и същ запис, докато потребителят не избере друг BrowseScreen1. Полетата в този запис остават зададени на стойностите, които са били наскоро запазени, а не на промени, които потребителят е направил и след това е изоставил.
Ако потребителят промени една или повече стойности във формата и след това избере иконата „отметка”, функцията Подаване на формуляр изпраща промените на потребителя в източник на данни.
- Ако промените са успешно запазени, се изпълнява формулата OnSuccess на формуляра и функцията Back() отваря екрана с подробности, за да покаже актуализираният запис.
- Ако промените не бъдат успешно запазени, се изпълнява формулата OnFailure на формуляра, но тя не променя нищо, защото е празна. Екранът Редактиране и създаване остава отворен, така че потребителят може да отмени промените или да поправи грешката. LblFormError1 показва удобно за потребителя съобщение за грешка, към което свойството грешка на формуляра е зададено.
Както при контролата Показване на формуляр, контролата Редактиране на формуляр съдържа контроли карта, които съдържат други контроли, които показват различни полета в запис:
В предишното изображение избраната карта показва AssetID поле и съдържа Въвеждане на текст контрола, така че потребителят да може да редактира стойността на това поле. (За разлика от това, екранът с подробности показва същото поле в етикет контрола, която е само за четене.) Въвеждане на текст контролата има свойство По подразбиране, зададено на Parent.Default. Ако потребителят създава запис, вместо да редактира такъв, тази контрола ще покаже начална стойност, която потребителят може да промени за новия запис.
В десния прозорец можете да покажете или скриете всяка карта, да ги пренаредите или конфигурирате да показват полета в различни видове контроли.
Създаване на приложение от самото начало
Като разберете как Power Apps генерира приложение, можете сами да създадете такова, което използва същите градивни елементи и формули, обсъдени по-рано в тази тема.
Идентифициране на тестови данни
За да се възползвате максимално от тази тема, започнете с източник на данни, с който можете да експериментирате. Той трябва да съдържа тестови данни, които можете да четете и актуализирате без притеснения.
Бележка
Ако използвате списък, създаден с помощта на Microsoft Lists, библиотека на SharePoint или таблица на Excel, която съдържа имена на колони с интервали, като източник на данни, Power Apps ще замени интервалите с "_x0020_". Например, „Име на колоната“ в SharePoint или Excel ще се появи като „Column_x0020_Name” в Power Apps, когато се показва в оформлението на данните или се използва във формула.
За да следвате точно останалата част от тази тема, създайте списък с име „Сладолед”, който съдържа тези данни:
Създайте приложение от празно, за телефони и го свържете с вашия източник на данни.
Бележка
Приложенията за таблети са много подобни, но може да искате различно оформление на екрана, за да се възползвате максимално от допълнителното пространство на екрана.
Примерите в останалата част на темата са базирани на име на източник на данни Сладолед.
Преглеждайте записи
Получете бърза информация от запис, като я намерите в галерия на екрана за сърфиране.
Добавете вертикална галерия и променете оформлението само на Заглавие.
Задайте свойството Елементи на галерията на Сладолед.
Задайте свойството Текст на първия етикет в галерията на ThisItem.Title, ако е настроен на нещо друго.
Етикетът вече показва стойността в полето Заглавие за всеки запис.
Преоразмерете галерията, за да запълни екрана, и задайте нейното свойство TemplateSize на 60.
Екранът наподобява този пример, който показва всички записи в източник на данни:
Преглед на подробности
Ако галерията не показва желаната информация, изберете стрелката за запис, за да отворите екрана с подробности. Контролата Показване на формуляр на този екран показва повече, вероятно всички полета за записа, който сте избрали.
Контролата Показване на формуляр използва две свойства за показване на записа:
- Свойство DataSource. Името на източник на данни, който съхранява записа. Това свойство попълва панела отдясно с полета и определя името на дисплея и типа на данните (низ, номер, дата и т.н.) на всяко поле.
- Свойство Елементи. Записът за показване. Това свойство често е свързано със свойството Избрани на контролата галерия, така че потребителят може да избере запис в контролата галерия и след това да детайлизира в този запис.
Когато е зададено свойството DataSource, можете да добавяте и премахвате полета през десния панел и да променяте начина, по който се показват.
На този екран потребителите не могат умишлено или случайно да променят някакви стойности на записа. Контролата Показване на формуляр е само за четене, така че няма да променя запис.
За да добавите контрола Показване на формуляр:
- Добавете екран и след това добавете контрола Показване на формуляр върху него
- Задайте свойството Източник на данни на контрола на формуляра на „Сладолед”.
В десния панел можете да изберете полетата, които да се показват на вашия екран, и кой тип карта да се покаже за всяко поле. Докато правите промени в десния прозорец, свойството DataField на всяка контрола карта е зададено на полето, с което потребителят ще взаимодейства. Вашият екран трябва да прилича на този пример:
Накрая трябва да свържем контролата Показване на формуляр на контролата галерия, така че да можем да разгледаме подробности за конкретен запис. Веднага щом завършим настройката на свойството Елементи, първият запис от галерията ще се появи под формата ни.
Задайте свойството елемент на контролата Показване на формуляр на Gallery1.Selected.
Подробностите за избрания артикул се показват във формуляра.
Страхотно! Сега се обръщаме към навигацията: как потребителят отваря екрана с подробности от екрана на галерията и отваря екрана на галерията от екрана с подробности.
Добавете контролата бутон върху екрана, задайте свойството й Текст за показване Назад, и задайте свойството й OnSelect на Back().
Тази формула връща потребителя обратно в галерията, когато приключи разглеждането на детайлите.
Сега, да се върнем към контролата галерия, добавете малко навигация към нашия детайлен екран.
Превключете към първия екран, който хоства нашата контрола галерия и изберете стрелката в първия елемент в галерията.
Задайте свойството OnSelect на формата на тази формула:
Navigate( Screen2, None )Натиснете F5 и след това изберете стрелка в галерията, за да покажете детайлите за даден елемент.
Изберете бутона Назад, за да се върнете в галерията с продукти, след което натиснете Esc.
Редактиране на подробности
И накрая, последната ни основна дейност е промяна на съдържанието на един запис, който потребителите извършват в контролата Редактиране на формуляр.
Контролата Редактиране на формуляр използва две свойства за показване и редактиране на записа:
- Свойство DataSource. Името на източник на данни, който съхранява записа. Точно както при контролата Показване на формуляр Това свойство попълва панела отдясно с полета и определя името на дисплея и типа на данните (низ, номер, дата и т.н.) За всяко поле. Това свойство също определя дали стойността на всяко поле е валидна, преди да го изпратите на основния източник на данни.
- Свойство Елементи. Записът за редактиране, който често е свързан към свойството Избрано на контролата галерия. По този начин можете да изберете запис в контролата галерия, покажете го на екрана с подробности и го редактирайте на екрана Редактиране и създаване.
За да добавите контрола Редактиране на формуляр:
- Добавете екран, добавете контрола Редактиране на формуляр и след това задайте свойството Източник на данни на формуляра на „Сладолед”.
- Задайте свойството Елемент на Gallery1.Selected.
Сега можете да изберете полетата, които да се показват на вашия екран. Можете също така да изберете кой тип карта да се показва за всяко поле. Докато правите промени в десния прозорец, свойството DataField на всяка контрола карта е зададено на полето, с което потребителят ще взаимодейства. Вашият екран трябва да прилича на този пример:
Тези две свойства са същите като свойствата на контролата Показване на формуляр. И само с тях можем да покажем детайлите на записа.
Контролата Редактиране на формуляр продължава по-далеч, като предлага функцията SubmitForm за записване на промени обратно в източник на данни. Използвате това с бутон или управление на изображението, за да запазите промените на потребителя.
- Добавете контролата бутон върху екрана, задайте свойството й Текст за показване Записване, и задайте свойството й OnSelect на тази формула:
SubmitForm( Form1 )
За да добавите навигация към и от този екран:
Добавете друга контрола бутон, задайте свойството й Текст за показване Отмяна, и задайте свойството й OnSelect на тази формула:
ResetForm( Form1 ); Back()Тази формула изхвърля несъхранените редакции и отваря предишния екран.
Задайте свойството OnSuccess на формата към Back().
Когато актуализациите се запаметяват успешно, предишният екран (в този случай екранът с подробности) се отваря автоматично.
На екрана Показване добавете бутон, задайте свойството му Текст за показване на Редактиране, и задайте свойството й OnSelect на тази формула:
Navigate( Screen3, None )
Създадохте основно приложение с три екрана за гледане и въвеждане на данни. За да го изпробвате, покажете екрана на галерията и след това натиснете F5 (или изберете стрелката напред „Преглед“ в горния ляв ъгъл на екрана). Розовата точка показва къде потребителят кликва или докосва екрана при всяка стъпка.
Създаване на запис
Потребителят взаимодейства със същия формуляр редактиране за актуализиране и създаване на записи. Когато потребителят иска да създаде запис, функцията NewForm превключва формата в режим Създаване.
Когато формата е в режим Създаване, стойността на всяко поле е зададена по подразбиране на източник на данни. Записът, предоставен на свойството Елемент на формуляра, се игнорира.
Когато потребителят е готов да запише новия запис, SubmitForm се изпълнява. След като формулярът бъде успешно изпратен, формулярът се превключва обратно към EditMode.
На първия екран ще добавите бутон Създаване:
На екрана с галерията добавете контролата бутон.
Задайте свойството Текст на бутона на Създаване и свойството му OnSelect на тази формула:
NewForm( Form1 ); Navigate( Screen3, None )Тази формула превключва контролата Редактиране на формуляр на Screen3 на режим Създаване и отваря този екран, така че потребителят да може да го попълни.
Когато се отвори екранът „Редактиране и създаване”, формулярът е празен, готов за потребителя да добави елемент. Когато потребителят избере бутона Записване, функцията SubmitForm гарантира, че се създава запис, вместо да се актуализира. Ако потребителят избере бутона Отмяна, функцията ResetForm превръща формуляра обратно към режима Редактиране и функцията Назад отваря екрана за разглеждане на галерията.
Изтриване на запис
На екрана Показване, добавете бутон и задайте свойството му Текст да показва Изтриване.
Задайте свойството OnSelect на бутона на тази формула:
Remove( 'Ice Cream', Gallery1.Selected ); Back()
Обработване на грешки
В това приложение възниква грешка, когато стойността на дадено поле не е валидна, задължително поле е празно, ако сте прекъснали връзката с мрежата или изскачат всякакви други проблеми.
Ако SubmitForm се проваля по някаква причина, свойството грешка на контролата Редактиране на формуляр съдържа съобщение за грешка за показване на потребителя. С тази информация потребителят трябва да може да коригира проблема и да изпрати отново промяната, или може да анулира актуализацията.
На екрана Редактиране и създаване добавете контрола етикет и го преместете точно под бутона Записване. Всяка грешка ще бъде лесно видима, след като потребителят избере този елемент за управление, за да запази промените.
Задайте свойството Текст на контролата Етикет да показва Form1.Error.
В приложение, което Power Apps генерира от данни, свойството AutoHeight на тази контрола е настроено на вярно, така че да не се изразходва място, ако не се появи грешка. Свойствата височина и Y на контролата Редактиране на формуляр също се настройва динамично, за да отчита растежа на тази контрола, когато възникне грешка. За повече подробности генерирайте приложение от съществуващи данни и проверете тези свойства. Контролът на текстовото поле за грешки е много кратък, когато не е възникнала грешка, може да се наложи да отворите изгледа разширени (наличен в раздела изглед), за да изберете тази контрола.
Обновяване на данните
Източник на данни се обновява винаги, когато потребителят отвори приложението, но потребителят може да иска да обнови записите в галерията, без да затваря приложението. Добавете бутон Обновяване, така че потребителят да може да го избере за ръчно опресняване на данните:
На екрана с контролата галерия добавете контрола бутон и задайте свойството й Текст да показва Обновяване.
Задайте свойството OnSelect на тази контрола на тази формула:
Refresh( 'Ice Cream' )
Търсете и сортирайте галерията
В приложението, което Power Apps генерира от данни, пропуснахме да обсъдим две контроли в горната част на екрана за преглед. Използвайки тези контроли, потребителят може да търси един или повече записи, да сортира списъка с записи във възходящ или низходящ ред или и двете.
Когато потребителят избере бутона за сортиране, редът на сортиране на галерията се отменя. За да създадем това поведение, използваме контекстна променлива за проследяване на посоката, в която е сортирана галерията. Когато потребителят избере бутона, променливата се актуализира и посоката се обръща. Свойството OnSelect на бутона за сортиране е зададено на тази формула: UpdateContext( {SortDescending1: !SortDescending1} )
Функцията UpdateContext създава контекстна променлива SortDescending1, ако тя още не съществува. Функцията ще прочете стойността на променливата и ще я зададе на логическата противоположност, използвайки ! оператор. Ако стойността е вярно, става невярно. Ако стойността е невярно, става вярно.
Формулата за свойството Елементи на контролата галерия използва тази контекстна променлива, заедно с текста в контролата TextSearchBox1:
Sort(
If( IsBlank(TextSearchBox1.Text),
Assets,
Filter( Assets, TextSearchBox1.Text in Text(ApproverEmail) )
),
ApproverEmail,
If(SortDescending1, Descending, Ascending)
)
Нека направим разбивка на това:
От външната страна ние имаме функция Сортиране, която взема три аргумента: таблица, поле, по което да сортирате и посоката, в която да сортирате.
- Посоката за сортиране е взета от контекстната променлива, която се превключва, когато потребителят избере контролата ImageSortUpDown1. Стойността вярно/невярно се превежда на константи Низходящо и Възходящо.
- Полето за сортиране е фиксирано на ApproverEmail. Ако промените полетата, които се появяват в галерията, ще трябва да промените и този аргумент.
От вътрешната страна, ние имаме функция филтър, която приема таблица като аргумент и израз за оценка за всеки запис.
- Таблицата е необработен източник на данни активи, която е началната точка преди филтриране или сортиране.
- Изразът търси екземпляр на низ в TextSearchBox1 в рамките на полето ApproverEmail. Още веднъж, ако промените полетата, които се появяват в галерията, ще трябва да актуализирате и този аргумент.
- Ако TextSearchBox1 е празно, потребителят иска да покаже всички записи и функцията филтър се заобикаля.
Това е само един пример; можете да изработите своя собствена формула за свойството Елементи, в зависимост от нуждите на приложението ви, чрез съставяне на филтър, Сортиране и други функции и оператори заедно.
Дизайн на екрана
Досега не сме обсъждали други начини за разпределение на контролите по екраните. Това е така, защото имате много възможности, а най-добрият избор зависи от нуждите на вашето конкретно приложение.
Тъй като недвижимите имоти на екраните на телефона са толкова ограничени, вероятно искате да разглеждате, показвате и редактирате / създавате на различни екрани. В тази тема функциите Навигация и Назад отваря всеки екран.
На таблет можете да преглеждате, показвате и редактирате / създавате на два или дори един екран. За последното, няма да се изисква функция Навигация или Назад.
Ако потребителят работи на същия екран, трябва да внимавате, че потребителят не може да промени избора в галерия и потенциално да загубите редакции в контролата Редактиране на формуляр. За да не позволява на потребителя да избере различен запис, когато промените в друг запис все още не са запазени, задайте Забраненото свойство на галерията на тази формула:
EditForm.Unsaved
Бележка
Можете ли да ни споделите повече за езиковите си предпочитания за документацията? Попълнете кратко проучване. (имайте предвид, че това проучване е на английски език)
Проучването ще отнеме около седем минути. Не се събират лични данни (декларация за поверителност).