XPortal Handbook

Filter

Build precise table filters with column actions, AND/OR connectors, and bracketed groups.

Filtering narrows a table to the records that match a condition. XPortal gives you a quick search, a filter control inside each column header, and a full Filter editor for combining conditions.

Search and Filter solve different problems

Use search when you want a quick text lookup across the table. Use Filter when you need an explicit rule such as “Status is Active”, “Created after a date”, or “Program contains Health”. Use the Filter button when more than one condition must work together.

The three ways to narrow a table

ControlBest forHow it behaves
SearchA quick lookupSearches the table's searchable fields using a text query
Column filterOne condition on one columnCreates one self-contained Column → Action → Value unit
FilterSeveral conditions or grouped logicBuilds a left-to-right chain of conditions with AND/OR and brackets

The table updates only when the condition is complete and valid. An unfinished value is not a reliable filter and should be completed or removed before you interpret the results.

Use the search field at the top of a table when you are looking for a name, identifier, email address, or another piece of text quickly.

Search is useful for discovery, but it is intentionally broad. It does not explain the rule that produced the result as clearly as a structured filter does. When another person needs to repeat your work, or when the result will be exported, use the Filter control and leave the condition visible.

Filter one column from its header

Each supported column has a small filter button in its header. The button is usually hidden until you hover over or focus the column header, as shown in the table reference.

Create the Column → Action → Value unit

  1. Move your pointer over the column header. The column actions become visible.

  2. Select the small filter button with the funnel icon.

  3. XPortal exposes a single filter unit for that column:

    Column → Action → Value

  4. Choose the action, such as contains, equals, is any of, after, or between.

  5. Enter or choose the value. For some actions, no value is needed, such as is empty, is not empty, is true, or is false.

  6. Review the active filter indicator and the rows returned by the table.

The column header unit is intentionally small and focused. It represents one condition for one column. It does not provide a place to add another condition beside it, and it does not let you chain header conditions with AND or OR in the header itself.

When the header filter is the right choice

Use it when the question is simple:

  • First Name contains “Sam”
  • Status is “Active”
  • Created At after 1 January 2026
  • Outstanding Balance greater than 0
  • Orientation Completed is false

When the question involves multiple columns, return to the table's Filter button.

Build a combined filter with the Filter button

The Filter button opens the full filter editor. It is the place to combine several Column → Action → Value units into one query.

Add a condition

  1. Select Filter in the table toolbar.
  2. Select Add filter.
  3. Choose the column you want to use.
  4. Choose the action for that column.
  5. Enter the value or values required by that action.
  6. Select Add filter again to add another condition.

The editor lays the conditions out as a chain. After the first condition, each condition has a connector that you can set to AND or OR.

AND and OR

  • AND means both sides must match.
  • OR means either side may match.

For example:

Status is Active AND Program contains Health

returns students who are active and whose program contains “Health”.

Status is Active OR Program contains Health

returns students who are active, students whose program contains “Health”, or students who match both.

The connector belongs to the condition that follows it. Read the chain from left to right so you can see how each new condition joins the result already built.

How evaluation order works

XPortal evaluates an ungrouped filter chain from left to right. It does not automatically give every AND higher precedence than every OR.

Let:

  • A = Status is Active
  • B = Location is Brisbane
  • C = Orientation Completed is true

This chain:

A OR B AND C

is evaluated as:

(A OR B) AND C

The result of A OR B is created first, then C is applied to that result. If your intended meaning is different, use brackets rather than relying on the reader to infer your intention.

Group expressions with brackets

The Filter editor lets you group adjacent filter units so that the group is evaluated first. This is the filtering equivalent of putting parentheses around part of a mathematical expression.

Example: change the meaning of a chain

Suppose you want:

Show students who are active, or who are in Brisbane and have completed orientation.

The intended expression is:

A OR (B AND C)

To build it:

  1. Add Status is Active.
  2. Add Location is Brisbane and set its connector to OR.
  3. Add Orientation Completed is true and set its connector to AND.
  4. Select Group filters.
  5. Select the adjacent Location and Orientation Completed units.
  6. Select Wrap in brackets.
  7. Confirm that the editor now shows the group around B AND C.
  8. Select Apply filters.

The resulting expression is A OR (B AND C), not (A OR B) AND C.

Grouping rules

  • You must select at least two filter units.
  • The selected units must be adjacent in the chain.
  • The bracketed group is evaluated before it joins the surrounding chain.
  • You can remove a group by selecting either bracket.
  • The Filter editor supports nested groups where the filter structure allows them.
  • Grouping does not change the meaning of a condition; it changes when that condition is evaluated.

Do not skip the brackets when meaning matters

“Active or Brisbane, and orientation complete” can produce a different result from “active, or Brisbane and orientation complete”. If the business rule contains the word “and” inside an “or” rule, group the inner expression and check the brackets before applying the filter.

Choose the right action for the data type

The middle cell in the filter unit is the Action menu. It is not a free-text instruction: XPortal chooses the available actions from the column's data type, so the action and the value editor always agree.

The seven column data types

XPortal currently defines seven filter data types. Integer, decimal, currency, and percentage are number display formats, not separate filter types; they use the same numeric actions.

Data typeWhat the column containsValue editor you may see
StringFree-form text such as names, emails, IDs, and addressesText, list of text values, or no value for presence actions
EnumOne choice from a finite set such as status, gender, or salutationOne option or several options from a list
BooleanA true/false fact such as orientation completedNo value: choose true or false in the Action menu
NumberA numeric value such as balance, count, percentage, or duration inputOne number, a list, a range, or a target plus tolerance
DateOne calendar date such as created date or commencement dateAn absolute date, preset date, relative date, or date range
Date rangeA span with a start and end, such as a deferment or enrolment periodDate, date range, or duration
Multiple valuesSeveral values stored in one field, such as tags or selected subjectsOne value, a list of values, a set, or a count

The same action label can appear for different data types but still mean something type-specific. For example, between on a number checks a numeric interval; between on a date checks a calendar interval; and duration between on a date range checks the length of the span.

String actions

String columns hold free-form text. Text matching follows the column's matching settings, which can include case sensitivity, trimming surrounding whitespace, accent sensitivity, and a fuzzy similarity threshold.

Comparison

ActionWhat it meansExample
equalsThe complete cleaned text is exactly the value entered.First Name equals Aisha
does not equalThe complete cleaned text is not the value entered. Empty values are not treated as a match; use is not empty when presence is the actual question.Campus does not equal Brisbane

Text

ActionWhat it meansExample
containsThe column contains the entered text anywhere.Email contains @example.edu
does not containThe column does not contain the entered text.Notes does not contain withdrawn
starts withThe column begins with the entered text.Last Name starts with Mc
does not start withThe column does not begin with the entered text.ID does not start with TEMP-
ends withThe column ends with the entered text.Email ends with .edu.au
does not end withThe column does not end with the entered text.Phone does not end with 0000

Pattern matching

ActionWhat it meansExample
matches regexThe value matches the regular expression you enter. Use this when the matching rule itself is a pattern.Student ID matches regex ^S-\d{4}$
does not match regexThe value fails to match the regular expression. An invalid expression does not produce a useful match.Code does not match regex ^TEST-
matches wildcardThe complete value matches a wildcard pattern. * represents any number of characters and ? represents one character.Email matches wildcard *@example.edu
does not match wildcardThe complete value does not match the wildcard pattern.ID does not match wildcard TEMP-*
fuzzy matchesThe value is similar enough to the target according to the similarity threshold. This is useful for likely spelling variations, not for exact reporting.Name fuzzy matches Jonathon
does not fuzzy matchThe value is below the similarity threshold for the target.Name does not fuzzy match Jonathon

Lists

ActionWhat it meansExample
is one ofThe complete column value equals at least one item in the entered text list.Student ID is one of S-1001, S-1002
is not one ofThe complete column value does not equal any item in the entered text list.Campus code is not one of TEMP, TEST

Length

Length actions compare the number of characters in the column after the configured whitespace handling is applied.

ActionWhat it means
length equalsCharacter count is exactly the entered number.
length does not equalCharacter count is different from the entered number.
length greater thanCharacter count is greater than the entered number.
length greater than or equalCharacter count is at least the entered number.
length less thanCharacter count is less than the entered number.
length less than or equalCharacter count is at most the entered number.
length betweenCharacter count falls inside the entered lower and upper bounds, using the selected inclusive or exclusive boundaries.

Presence

ActionWhat it means
is emptyThe column has no value.
is not emptyThe column has a value, regardless of the value's text.

Enum actions

Enum columns use a controlled list of options. Choose the option shown by XPortal rather than typing a spelling variation. This is the usual type for statuses, salutations, genders, locations, and other finite choices.

Selection

ActionWhat it meansExample
isThe column has exactly the selected option.Status is Active
is notThe column does not have the selected option. Empty values are not a substitute for a real enum value.Status is not Withdrawn
is any ofThe column has at least one of the selected options.Status is any of Active, Pending
is none ofThe column has none of the selected options.Status is none of Withdrawn, Completed

Presence

Enum columns also support is empty and is not empty. Use these when the question is whether an option has been recorded, not which option it is.

Boolean actions

Boolean columns represent a yes/no fact. The action itself supplies the value, so the Value cell does not need a separate input.

ActionWhat it meansExample
is trueKeep rows whose normalized value is true.Orientation Completed is true
is falseKeep rows whose normalized value is false.Is International is false
is emptyKeep rows where no boolean value has been recorded.Orientation Completed is empty
is not emptyKeep rows where some boolean value has been recorded.Orientation Completed is not empty

is false and is empty are different. A missing answer is not the same as a recorded false answer.

Number actions

Number columns can be formatted as integer, decimal, currency, or percentage, but all four use the numeric action menu. The formatting changes how the value is displayed; it does not change the comparison rules.

Comparison

ActionWhat it meansExample
equalsNumeric value is exactly the target number.Outstanding Balance equals 0
does not equalNumeric value is different from the target number.Course Count does not equal 0
greater thanNumeric value is above the target; the target itself is excluded.Balance greater than 100
greater than or equalNumeric value is at least the target; the target itself is included.Attendance greater than or equal 80
less thanNumeric value is below the target; the target itself is excluded.Age less than 18
less than or equalNumeric value is at most the target; the target itself is included.Attempts less than or equal 3
approximately equalsNumeric value is within the entered tolerance of the target, inclusive. For example, target 100 with tolerance 5 matches 95 through 105.Amount approximately equals 100 ± 5

Range

ActionWhat it means
betweenNumeric value falls inside the lower and upper bounds. Each boundary can be inclusive or exclusive.
not betweenNumeric value falls outside the selected numeric range.

Lists

ActionWhat it means
is one ofNumeric value exactly matches at least one number in the list.
is not one ofNumeric value does not match any number in the list.

Presence

Number columns support is empty and is not empty. A zero is a value, so it is not empty.

Date actions

Date columns represent one calendar date. XPortal evaluates dates in the application's configured Australia/Brisbane date context and lets you use absolute dates, named presets, or relative dates.

Calendar date

ActionWhat it meansExample
is onDate is exactly the selected calendar date.Commencement Date is on 1 July 2026
is not onDate is different from the selected calendar date.Created At is not on 1 July 2026
beforeDate is earlier than the selected date; the selected date is excluded.Completion Date before 1 July 2026
on or beforeDate is earlier than or equal to the selected date.Due Date on or before 1 July 2026
afterDate is later than the selected date; the selected date is excluded.Created At after 1 July 2026
on or afterDate is later than or equal to the selected date.Start Date on or after 1 July 2026
betweenDate falls inside the selected start and end dates, using the selected boundary settings.Start Date between 1 July and 31 July
not betweenDate falls outside the selected date range.Created At not between 1 January and 31 March

Relative date

ActionWhat it meansExample
in last NDate falls from today back through the selected number of days, weeks, months, quarters, or years.Created At in last 7 days
not in last NDate does not fall in that trailing period.Created At not in last 7 days
in next NDate falls from today forward through the selected period.Graduation Date in next 30 days
not in next NDate does not fall in that upcoming period.Graduation Date not in next 30 days
more than N agoDate is earlier than the boundary calculated by subtracting the selected period from today.Created At more than 12 months ago

The date picker also provides presets such as today, yesterday, tomorrow, the start or end of this week, month, quarter, or year.

Presence

Date columns support is empty and is not empty. A missing date is not matched by a comparison such as not on; use is not empty when presence is what matters.

Date-range actions

Date-range columns contain a start and end date. These actions compare the stored span with a date or another span.

Range relationship

ActionWhat it meansExample
overlapsAt least one day of the stored range intersects the target range.Deferment overlaps July
does not overlapThe stored range has no intersection with the target range.Enrolment does not overlap the holiday period
contains dateThe stored range includes the target date.Enrolment contains date 15 July
does not contain dateThe stored range does not include the target date.Deferment does not contain date 15 July
contains rangeThe stored range fully contains the target range.Enrolment contains range 1–15 July
does not contain rangeThe stored range does not fully contain the target range.Enrolment does not contain range 1–15 July
is contained by rangeThe stored range sits fully inside the target range.Class is contained by range 1–31 July
is not contained by rangeThe stored range is not fully inside the target range.Class is not contained by range 1–31 July
entirely beforeThe stored range ends before the target range begins.Deferment entirely before 1 July
entirely afterThe stored range begins after the target range ends.Deferment entirely after 31 July

Start date

These actions compare only the start of the stored range:

ActionWhat it means
starts onStart date equals the target date.
starts beforeStart date is earlier than the target date.
starts on or beforeStart date is earlier than or equal to the target date.
starts afterStart date is later than the target date.
starts on or afterStart date is later than or equal to the target date.
starts betweenStart date falls inside the target date range.

End date

These actions compare only the end of the stored range:

ActionWhat it means
ends onEnd date equals the target date.
ends beforeEnd date is earlier than the target date.
ends on or beforeEnd date is earlier than or equal to the target date.
ends afterEnd date is later than the target date.
ends on or afterEnd date is later than or equal to the target date.
ends betweenEnd date falls inside the target date range.

Duration

Duration actions compare the length of the stored range. The available units are days, weeks, months, and years.

ActionWhat it means
duration equalsRange lasts exactly the entered duration.
duration does not equalRange lasts a different duration.
duration greater thanRange lasts longer than the entered duration.
duration greater than or equalRange lasts at least the entered duration.
duration less thanRange lasts less than the entered duration.
duration less than or equalRange lasts at most the entered duration.
duration betweenRange duration falls within the lower and upper duration bounds, with selectable boundary inclusion.

Presence

Date-range columns support is empty and is not empty. Use these when the range itself has not been recorded or has been recorded, regardless of its length.

Multiple-value actions

Multiple-value columns store a set or list inside one field. XPortal normalizes the individual values before comparing them, so the actions below are about membership in that set, not about substring matching across the whole display string.

Membership

ActionWhat it meansExample
containsSet contains the one entered value.Subjects contains Mathematics
does not containSet does not contain the one entered value.Tags does not contain inactive
contains any ofSet contains at least one value from the entered list.Subjects contains any of Math, English
contains none ofSet contains none of the entered values.Tags contains none of archived, test
contains all ofSet contains every value from the entered list.Subjects contains all of Math, English
does not contain all ofSet is missing at least one value from the entered list.Subjects does not contain all of Math, English

Set comparison

ActionWhat it means
exactly equals setSet contains exactly the entered values: no missing values and no additional values.
does not exactly equal setSet differs from the entered set by at least one value.

Item count

Count actions compare the number of distinct normalized values in the set:

ActionWhat it means
count equalsSet contains exactly the entered number of values.
count does not equalSet contains a different number of values.
count greater thanSet contains more values than the entered number.
count greater than or equalSet contains at least the entered number of values.
count less thanSet contains fewer values than the entered number.
count less than or equalSet contains at most the entered number of values.
count betweenSet contains a number of values inside the selected lower and upper bounds.

Presence

Multiple-value columns support is empty and is not empty. An empty set is different from a set containing one value.

What appears in the Value cell

The Action determines the kind of control that appears in the third cell:

Action needs…What appears in Value
No operandNothing to enter. The action itself is the test, as with is empty or is true.
One text valueA text input.
Several text or number valuesA list editor or text area for multiple values.
One enum optionA single-choice option list.
Several enum optionsA multi-select option list.
One numberA numeric input using the column's format.
A number rangeLower and upper bounds plus inclusive/exclusive boundary controls.
An approximate numberTarget and tolerance inputs.
One dateA date picker or date preset.
A date rangeStart and end date operands.
A relative dateAmount plus unit, such as 30 days.
A durationAmount plus unit, such as 6 months.
A duration rangeLower and upper duration bounds plus a unit.

If the Value cell says Set value…, the filter is not ready. Complete it before applying the filter.

How “not” actions treat missing values

For most data types, a missing value is not treated as a successful not equals, does not contain, or other negative comparison. Use is empty or is not empty when you need to include or exclude missing values deliberately. This keeps “different from X” separate from “not provided”.

Enter values carefully

Text values

Text filters can expose matching options such as case sensitivity, trimming surrounding whitespace, accent sensitivity, and fuzzy similarity. Use the simplest matching option that answers the question. Regex, wildcard, and fuzzy matching are powerful, but they can return more records than a simple contains or equals action.

Lists and status values

For a status or another finite list, select the canonical option rather than typing a variation. Use is any of when several values are acceptable and is none of when they should all be excluded.

Numbers and ranges

For a range, enter a lower bound, an upper bound, or both. Check whether each boundary is inclusive or exclusive. For example, “at least 10” includes 10, while “greater than 10” does not.

Dates

Absolute dates answer questions about a known calendar date. Relative dates answer questions that should move with time, such as “in the next 30 days” or “in the last 3 months”. Use a relative action for a recurring work queue so you do not have to edit the date every morning.

Apply, clear, and review filters

The full Filter editor keeps changes as a draft while you work:

  • Select Apply filters to apply the complete chain to the table.
  • Select Cancel to close the editor without applying the draft changes.
  • Select Clear all to remove the filters in the editor.
  • Use the active filter count on the Filter button as a reminder that the table is restricted.
  • Review the table after applying filters; a correct expression can still return zero rows if no records match it.

When you open a previously configured filter, review the column, action, value, connectors, and brackets as one expression. Changing one part can change the result substantially.

Filter checklist

  • Are you filtering the correct page, organisation, and row type?
  • Did you choose the correct column rather than a similarly named field?
  • Does the action match the value type?
  • Does the value use the exact status or option required?
  • Should the next condition use AND or OR?
  • Does the expression need brackets?
  • Did you apply the filter after reviewing the whole chain?
  • If you export next, did you check the resulting row count and visible columns? See Export.

On this page