MS PowerApps, если после Switch в Powerapps, поэтому он выполняется независимо (после коммутатора, а не внутри) - PullRequest
0 голосов
/ 30 июня 2019

У меня проблема с функцией PowerApps, которую я не могу решить самостоятельно.Ниже вы можете найти код, который работает (хотя я предполагаю, что он не очень хорошо оптимизирован).Как и в разделе, условие if выполняется внутри переключателя, как один из его аргументов, а не выполняется после переключателя AFTER.Конечный результат должен быть следующим: пользователь нажимает кнопку, которая применяет фильтр к таблице, и после этого, если условие вступает в игру и выполняет свою работу.

Основная часть - это условие if, когда пользователь выбирает критерии ввыпадающее меню, условие сортирует таблицу с именем или рейтингом.Внутри этого условия есть функции для поддержки поисковой системы и сортировки по возрастанию / убыванию кнопки.После этого я хотел добавить поддержку кнопок фильтра, и сами кнопки работают нормально, но условие if выполняется только тогда, когда нажата последняя кнопка (поэтому, например, когда я нажимаю кнопку, связанную с It, она устанавливает категорию на «1» ипереход к следующему экрану, но поиск / сортировка не работает).Я пытался разделить условия с помощью нескольких круглых скобок, добавив «;;» в конце переключателя, но это не решило проблему (дополнительно сломало приложение).

Switch(
    category;
    1;
    Filter(
        Table1_2;
        '4. Area of training' = "IT-related"
    );
    //here is a bunch of filters for categories from 2 to 4
    5; //no filter as it should display table without any filter
If( //the problematic if, that is executed only when category is "5"
        dropdown_sort.Selected.Value = "Name of the training"; //check what the value of dropdown is, and the execute positive or negative case
        SortByColumns(
            Search(
                Table1_2;
                search_engine.Text; //takes text input and searches inside column below
                "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training"
            );
            "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training"; //sorting on this column
            If( //to change ascendin/descending on button press
                sort;
                Ascending;
                Descending
            )
        );
        //here is second part of if, that is basically identical to above (it sorts different column), and executes case when selected value of dropdown is different that "Name..."
    )
)

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

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

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

Switch(
    category;
    1;
    If(
        dropdown_sort.Selected.Value = "Name of the training";
        SortByColumns(
            Search(
                Filter(
                    Table1_2;
                    '4. Area of training' = "IT-related"
                );
                search_engine.Text;
                "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training"
            );
            "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training";
            If(
                sort;
                Ascending;
                Descending
            )
        );

0 голосов
/ 01 июля 2019

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

if( category=1;
    Filter(
        Table1_2;
        '4. Area of training' = "IT-related"
    );;If( //the problematic if, that is executed only when category is "5"
        dropdown_sort.Selected.Value = "Name of the training"; //check what the value of dropdown is, and the execute positive or negative case
        SortByColumns(
            Search(
                Table1_2;
                search_engine.Text; //takes text input and searches inside column below
                "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training"
            );
            "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training"; //sorting on this column
            If( //to change ascendin/descending on button press
                sort;
                Ascending;
                Descending
            )
        );
        //here is second part of if, that is basically identical to above (it sorts different column), and executes case when selected value of dropdown is different that "Name..."
    )
    category=2;
    Filter(
        Table1_2;
        '4. Area of training' = "IT-related"
    );;If( //the problematic if, that is executed only when category is "5"
        dropdown_sort.Selected.Value = "Name of the training"; //check what the value of dropdown is, and the execute positive or negative case
        SortByColumns(
            Search(
                Table1_2;
                search_engine.Text; //takes text input and searches inside column below
                "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training"
            );
            "3_x002e__x0020_Name_x0020_of_x0020_the_x0020_training"; //sorting on this column
            If( //to change ascendin/descending on button press
                sort;
                Ascending;
                Descending
            )
        );
        //here is second part of if, that is basically identical to above (it sorts different column), and executes case when selected value of dropdown is different that "Name..."
    )
    //here is a bunch of filters for categories from 2 to 4
    category=5;  

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...