Есть ли в Powerapps возможность разбивать текст поиска на отдельные строки и отображать в галерее только элементы, содержащие строки «все»? - PullRequest
1 голос
/ 23 марта 2019

Мой случай похож на этот случай: Нажмите здесь !

У меня есть галерея, в которой отображаются предметы из коллекции. Я уже добавил Textinput.Text, чтобы предоставить клиентам возможность поиска товаров.

Но я борюсь с тем, чтобы реализовать «полнотекстовый» поиск.

Решение @carlosfigueira, предложенное в вышеупомянутом вопросе, прекрасно работает для разделения текста поиска, но я хотел бы, чтобы в галерее отображались только те элементы, которые содержат все отдельные строки.

Это мой код для предметов в галерее

Filter(
    CustomListIssues;
    Sum(
        ForAll(
            Filter(
                Split(
                    InpSearchString.Text;
                    " "
                );
                Len(Trim(Result)) > 0
            );
            If(
                Result in 'Title EN';
                1;
                0
            ) && "Unresolved" = Status && If(
                !IsEmpty(lbSearchDepartment.SelectedItems.Result);
                lbSearchDepartment.Selected.Value = Departement;
                "" in Departement
            )
        );
        Value
    ) > 0
)

CustomListIssues: коллекция, в которой я храню все элементы списка

InpSearchString.Text: Поиск TextInput.Text

'Title EN': столбец, в котором я хотел бы искать на основе заданной строки поиска

Обзор приложения:

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

enter image description here

  1. Заданная строка поиска
  2. Обрезка (InpSearchString.Text)
  3. Галерея, в которой отображаются предметы из коллекции

Ожидаемый результат:

Я бы хотел, чтобы в галерее отображались только те элементы, которые включают все отдельные строки

Заранее спасибо

Саша Дорниг

1 Ответ

0 голосов
/ 24 апреля 2019

Если вы хотите иметь все строки вместо одной, вы можете слегка изменить логику выражения.Перед тем, как будет суммировано 1, если слово находится в заголовке, и проверьте, что результат больше 0 (поэтому, если таковое имеется, то элемент будет возвращен).В этом измененном выражении ниже мы добавляем 1, если каждое слово не является в заголовке, и в конце мы сравниваем сумму с 0 - если это не ноль, то хотя бы одно слово не было найденои мы не возвращаем запись.

Filter(
    CustomListIssues;
    Sum(
        ForAll(
            Filter(
                Split(
                    InpSearchString.Text;
                    " "
                );
                Len(Trim(Result)) > 0
            );
            If(
                Result in 'Title EN';
                0;
                1
            ) && "Unresolved" = Status && If(
                !IsEmpty(lbSearchDepartment.SelectedItems.Result);
                lbSearchDepartment.Selected.Value = Departement;
                "" in Departement
            )
        );
        Value
    ) = 0
)
...