Фильтрация источника данных PowerApps для BrowseGallery на основе столбца Sharepoint

Я разрабатываю приложение PowerApp для управления активами, основанное на списке SharePoint Online. Он принимает такие поля, как тип элемента (например, портативный компьютер, сервер или принтер и т. Д.), И позволяет пользователю выполнять фильтрацию на основе отсканированного штрих-кода. Однако теперь я создал экран меню, который пользователь выбирает, хочет ли он искать ноутбук или сервер. Это перемещает их на другой экран в зависимости от того, что они выбирают. Я хочу отфильтровать источник данных на основе значения в поле AssetType. Это поле с несколькими вариантами выбора: ноутбуки, серверы или принтеры.

Текущая формула для BrowseGallery - SortByColumns(Filter(EquipmentInventory, StartsWith(Barcode, BarcodeScanner1.Value)), "Title", If(SortDescending1, Descending, Ascending))

Я пробовал SortByColumns(Filter(EquipmentInventory.ItemType == "Laptop", StartsWith(Barcode, BarcodeScanner1.Value)), "Title", If(SortDescending1, Descending, Ascending))

а также

SortByColumns(Search([@AssetType], BrowseScreen_SearchInput.Text in AssetType && AssetType.Value = "Laptops", "AssetType", If(SortDescending1, Descending, Ascending))

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

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

Я хотел бы, чтобы каждый экран отображал BrowseGallery своих активов, а затем позволял пользователю продолжать поиск на основе штрих-кода.

Любая помощь очень ценится!


person devdc    schedule 11.09.2019    source источник


Ответы (1)


Для формулы фильтра попробуйте что-нибудь вроде: Filter(EquipmentInventory, ItemType = 'Name of screen 1 item type selector'.Selected.ItemType.Value)

Вы видите ошибку, потому что формула пытается сравнить два элемента с разными типами. Чтобы проверить это, я обычно добавляю метку на свой экран и тестирую каждую часть сравнения, чтобы убедиться, что значения соответствуют моим ожиданиям. Например, задайте для текста метки значение ItemType и часть «Имя селектора типа элемента экрана 1 ».Selected.ItemType.Value и убедитесь, что они показывают одно и то же значение.

Как только фильтр заработает, часть SortByColumns тоже должна работать!

person Emily Kessler    schedule 11.09.2019
comment
Спасибо Эмили за помощь! Не могли бы вы уточнить, каким должен быть селектор ItemType в этом случае? Я пробовал Filter(EquipmentInventory, AssetType = "Laptops".Selected.AssetType.Value) - person devdc; 12.09.2019
comment
Под селектором типа элемента я подразумеваю то, каким образом вы передаете ввод пользователя с экрана Screen1 на Screen2. У вас может быть галерея на Screen1, которая показывает типы элементов, и они выбирают один, щелкнув значок стрелки, а затем вы должны использовать Gallery1.Selected.ItemType.Value в своей формуле фильтра. Или у вас могут быть переключатели и кнопка Select, которая запускает Screen2, а затем вы могли бы использовать Radio1.Selected.Value. Или у вас может быть три кнопки (по одной для каждого типа элемента) и задать новую переменную «Ноутбуки», «Принтеры» или «Серверы», а затем использовать эту переменную в своей формуле. Это действительно зависит от вас! - person Emily Kessler; 12.09.2019