Search code examples
powerapps

Group Multiple status values to filter gallery in PowerApp


I have SharePoint data source with multiple columns. One column includes the Status for each task.

Columns values are

New, Waiting for approval, Level 1 Approved, Level 2 Approved, Finance Approved, Reject by Finance, Rejected by Approved, Draft.

There is a dropdown for filter gallery items. I want to group the status values of the above column as follow so a single selected value can show orders with different status such as:

Dropdown Value 1 - "All" (contains all status values) Dropdown value 2 - "New" - It should filter the tasks with status (New, Waiting for approval) Dropdown value 3 - "Rejected" - It should filter the tasks with status (Reject by Finance, Rejected by Approved) Dropdown value 4 - "In Progress" - It should filter the tasks with status (Level 1 Approved, Level 2 Approved)

How can I achieve this ?

Thanks in advance

Tried this but not working

SortByColumns(
  Filter (
    Orders,
    UserOrderStatusdd.Selected.Value = "All"
      || OrderStatus.Value=UserOrderStatusdd.Selected.Value 
      || UserOrderStatusdd.Selected.Value = "Completed" , OrderStatus.Value = "Finance Approval Pending" 
      || UserOrderStatusdd.Selected.Value = "Rejected", OrderStatus.Value = "Rejected" 
      || UserOrderStatusdd.Selected.Value = "In Progress", OrderStatus.Value in "L1Approved", "L2Approved"
    ),
  "OrderID",
  SortOrder.Descending
)

Solution

  • You can use an expression like the one below. I'm using the "function version" of the And (&&) / Or (||) operators to make it easier to see the nesting, but feel free to use the operators as you were if you prefer.

    SortByColumns(
      Filter (
        Orders,
        Or(
          UserOrderStatusdd.Selected.Value = "All",
          And(
            UserOrderStatusdd.Selected.Value = "New",
            Or(
              OrderStatus.Value = "New",
              OrderStatus.Value = "Waiting for approval"
            )
          ),
          And(
            UserOrderStatusdd.Selected.Value = "Rejected",
            Or(
              OrderStatus.Value = "Reject by Finance",
              OrderStatus.Value = "Reject by Approver"
            )
          ),
          And(
            UserOrderStatusdd.Selected.Value = "In Progress",
            Or(
              OrderStatus.Value = "Level 1 Approved",
              OrderStatus.Value = "Level 2 Approved"
            )
          )
        )
      ),
      "OrderID",
      SortOrder.Descending
    )