Table
Table component for Universal Dashboard
Tables display sets of data. They can be fully customized.
Tables display information in a way that’s easy to scan, so that users can look for patterns and insights. They can be embedded in primary content, such as cards.
Simple Table

A simple example with no frills. Table columns are defined from the data.
Table with Custom Columns

Define custom columns for your table.
Table with Custom Column Rendering

Define column rendering. Sorting and exporting still work for the table.
Table Column Width
Column width can be defined using the -Width parameter. You can also decide to truncate columns that extend past that width.
Filters
You can configure custom filters per column. The table supports text, select, fuzzy , slider, range, date , number, and autocomplete filters.

Table with server-side processing
For a full example of server-side processing, see this blog post.

Process data on the server so you can perform paging, filtering, sorting and searching in systems like SQL.
Paging
By default, paging is disable and tables will grow based on how many rows of data you provide. You can enable paging by using the -ShowPagination cmdlet (alias -Paging). You can configure the page size using the -PageSize cmdlet.
Disable Page Size All
By default, the page size selector provides an option to show all rows. If you want to prevent users from doing this, use the -DisablePageSizeAll cmdlet.
Sorting
To enable sorting for a table, use the -ShowSort parameter. When you enable sorting, you will be able to click the table headers to sort the table by clicking the headers. By default, multi-sort is enabled. To multi-hold shift and click a column header.
You can control which columns can be sorted by using New-UDTableColumn and -ShowSort parameter.
Disable Sort Remove
This documentation is for a feature that will be available in a future version of PowerShell Universal.
By default, the sorting of a table has 3 states. Unsorted, ascending and descending. If you would like to disable the unsorted state, use the -DisableSortRemove parameter of New-UDTable.
Selection
Tables support selection of rows. You can create an event handler for the OnRowSelected parameter to receive when a new row is selected or unselected or you can use Get-UDElement to retrieve the current set of selected rows.
The following example creates a table with row selection enabled. A toast is show when clicking the row or when clicking the GET Rows button.

The $EventData variable for the -OnRowSelected event will include all the columns as properties and a selected property as to whether the row was selected or unselected.
For example, the service table data would look like this.
Exporting
Tables support exporting the data within the table. You can export as CSV, XLSX, JSON or PDF. You can define which columns to include in an export and choose to export just the current page or all the data within the table.

Server-Side Exporting
You can control the export functionality with a PowerShell script block. This is useful when exporting from server-side sources like SQL server tables.
In this example, I have a SQL table that contains podcasts. When exporting, you will receive information about the current state of the table to allow you to customize what data is exported.
Customizing Export Options
You can decide which export options to present to your users using the -ExportOption cmdlet. The following example would only show the CSV export option.
Customizing Labels
You can use the -TextOption parameter along with the New-UDTableTextOption cmdlet to set text fields within the table.
Refresh with a button
You can externally refresh a table by putting the table within a dynamic region and using Sync-UDElement.
This example creates a button to refresh the table.
API
New-UDTable
Creates a new table.
Name
Type
Description
Required
Id
String
The ID of the component. It defaults to a random GUID.
false
Title
String
The title to show at the top of the table's card.
false
Data
Object[]
The data to put into the table.
true
LoadData
Endpoint
When using dynamic tables, this script block is called. The $Body parameter will contain a hashtable the following options: filters: @() orderBy: string orderDirection: string page: int pageSize: int properties: @() search: string totalCount: int You can use these values to perform server-side processing, like SQL queries, to improve the performance of large grids. After processing the data with these values, output the data via Out-UDTableData.
true
Columns
Hashtable[]
Defines the columns to show within the table. Use New-UDTableColumn to define these columns. If this parameter isn't specified, the properties of the data that you pass in will become the columns.
false
Sort
SwitchParameter
Whether sorting is enabled in the table.
false
Filter
SwitchParameter
Whether filtering is enabled in the table.
false
Search
SwitchParameter
Whether search is enabled in the table.
false
Export
SwitchParameter
Whether exporting is enabled within the table.
false
Paging
SwitchParameter
Whether to enable paging.
false
PageSize
int
Number of items to show in a page by default. Defaults to 5.
false
PageSizeOptions
int[]
Page size options to show in the selector. Defaults to @(5, 10, 20)
false
Dense
SwitchParameter
Enables dense padding.
false
DefaultSortDirection
string
Sets the default sort direction for the table.
false
HideToggleAllRowsSelected
SwitchParameter
Disables the toggle all rows when using selection
false
DisableMultiSelect
SwitchParameter
Disables multiple selections
false
DisablePageSizeAll
SwitchParameter
Disables the ability to show all records in a paged table.
false
New-UDTableColumn
Defines column properties for a table.
Name
Type
Description
Required
Id
String
The ID of the component. It defaults to a random GUID.
false
Property
String
The property to select from the data for this column
true
Title
String
The title to display at the top of the column. Property name is used if not specified.
false
Render
ScriptBlock
A script block that is called when rendering this column. The $_ variable will contain the current row. Return any control from this scriptblock.
false
ShowSort
Switch
Include this column in sorting.
false
ShowFilter
Switch
Include a filter for this column.
false
FilterType
string
The type of filter to display. text, select, fuzzy, slider, range, date, number, autocomplete
false
Style
Hashtable
A CSS style applied to the column
false
Width
int
The width of the column in pixels
false
IncludeInSearch
Switch
Whether to include this column when searching.
false
IncludeInExport
Switch
Whether to include this column when exporting.
false
DefaultSortColumn
Switch
This column defines the default sorting when the table is loaded.
false
Align
string
The alignment of the data in the table.
false
Truncate
Switch
Whether to truncate the text in the column if it is longer than -Width
false
SortType
string
How to sort the data within the column
false
Out-UDTableData
Returns data from the -LoadData parameter of New-UDTable.
Name
Type
Description
Required
Data
object
The data to display in the table
true
Page
int
The current page.
true
TotalCount
int
The total count of rows in the entire data set. This is not just what is passed to data.
true
Properties
string[]
Properties included in the data. Use $EventData.Properties.
true
New-UDTableTextOption
Allows for custom text in the table controls.
Name
Type
Description
Required
ExportAllCsv
string
Export all as CSV text
false
ExportCurrentViewCsv
string
Export Current View as CSV text
false
ExportAllXLSX
string
Export all as XLSX text
false
ExportCurrentViewXLSX
string
Export Current View as XLSX text
false
ExportAllPDF
string
Export all as PDF text
false
ExportCurrentViewPDF
string
Export Current View as PDF text
false
ExportAllJson
string
Export all as JSON text
false
ExportCurrentViewJson
string
Export Current View as JSON text
false
ExportFileName
string
File Name text
false
Search
string
Search {0} records... text
false
FilterSearch
string
Search {0} records... text
false
Last updated
Was this helpful?