Skip to content

Table

The Table component is a powerful and flexible data grid that allows you to display, sort, filter, and manipulate tabular data. It supports various features like pagination, searching, row selection, custom cell rendering, and more.

  • Metro UI Core
  • DOM library
<table data-role="table">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>61</td>
<td>2011/04/25</td>
<td>$320,800</td>
</tr>
<!-- More rows... -->
</tbody>
</table>
<table class="table striped row-hover"
data-role="table"
data-source="data/table.json">
<thead></thead>
<tbody></tbody>
</table>
<table class="table striped row-hover border responsive-md fixed-header"
data-role="table"
data-caption="Table caption"
data-rows="10"
data-rows-steps="5, 10, 50, 100"
data-show-activity="false"
data-source="data/table.json"
data-show-skip="true"
data-pagination-wrapper="#pagination"
data-check="true"
data-show-inspector-button="true"
data-horizontal-scroll="true"
data-cell-wrapper="true">
<thead></thead>
<tbody></tbody>
</table>
<div id="pagination"></div>
function drawCell(td, val, index, head, cells) {
if (head.name === 'name') {
td.html('').append(
$('<a>').attr('href', '#'+val).html(val)
)
}
if (head.name === 'age') {
var pb = $("<div>");
pb.attr("data-role", "progress")
.attr("data-value", val);
td.html('').append(pb);
}
}
ParameterTypeDefaultDescription
captionstring""Table caption text
useCurrentSlicebooleanfalseUse current slice for operations (check, uncheck)
showInspectorButtonbooleanfalseShow inspector button
inspectorButtonIconstring🔧Icon for inspector button
templateBeginTokenstring<%Begin token for templates
templateEndTokenstring%>End token for templates
paginationDistancenumber5Distance between pagination buttons
paginationIslandSizenumber3Size of pagination islands
paginationShortTracknumber10Short track for pagination
horizontalScrollbooleanfalseEnable horizontal scrolling
horizontalScrollStopstringnullMedia query to stop horizontal scrolling
checkbooleanfalseShow checkboxes for row selection
checkTypestringcheckboxType of check control (checkbox or radio)
checkColIndexnumber0Column index for check control
checkNamestringnullName for check controls
checkStoreKeystringTABLE:$1:KEYSKey for storing checked items
rownumbooleanfalseShow row numbers
rownumTitlestring#Title for rownum column
filtersstringnullFilters for data
filtersOperatorstringandOperator for filters (and/or)
headobjectnullHead data
bodyobjectnullBody data
sourcestringnullData source URL
staticbooleanfalseStatic table mode
searchMinLengthnumber1Minimum length for search
searchThresholdnumber500Threshold for search
searchFieldsstringnullFields to search in
showRowsStepsbooleantrueShow rows steps control
showSearchbooleantrueShow search control
showTableInfobooleantrueShow table info
showPaginationbooleantrueShow pagination
paginationShortModebooleantrueUse short pagination mode
showActivitybooleantrueShow activity indicator
muteTablebooleantrueMute table during operations
showSkipbooleanfalseShow skip control
rowsnumber10Number of rows per page
rowsStepsstring10,25,50,100Steps for rows control
staticViewbooleanfalseStatic view mode
viewSaveModestringclientMode for saving view (client/server)
viewSavePathstringTABLE:$1:OPTIONSPath for saving view
sortDirstringascDefault sort direction
decimalSeparatorstring.Decimal separator
thousandSeparatorstring,Thousand separator
activityTypestringatomType of activity indicator
activityStylestringcolorStyle of activity indicator
activityTimeoutnumber100Timeout for activity indicator
searchWrapperstringnullWrapper for search control
rowsWrapperstringnullWrapper for rows control
infoWrapperstringnullWrapper for info
paginationWrapperstringnullWrapper for pagination
skipWrapperstringnullWrapper for skip control
cellWrapperbooleantrueWrap cell content
  • addItem(item, redraw) - Add an item to the table
  • addItems(items, redraw) - Add multiple items to the table
  • updateItem(key, field, value) - Update an item in the table
  • getItem(key) - Get an item by key
  • deleteItem(fieldIndex, value) - Delete an item by field index and value
  • deleteItemByName(fieldName, value) - Delete an item by field name and value
  • draw() - Draw the table
  • sorting(dir) - Sort the table
  • search(val) - Search in the table
  • setHeads(data) - Set table headers
  • setHeadItem(name, data) - Set a specific header item
  • setItems(data) - Set table items
  • setData(data) - Set table data
  • loadData(source, review) - Load data from source
  • reload(review) - Reload data
  • clear() - Clear the table
  • next() - Go to next page
  • prev() - Go to previous page
  • first() - Go to first page
  • last() - Go to last page
  • page(num) - Go to specific page
  • addFilter(f, redraw) - Add a filter
  • removeFilter(key, redraw) - Remove a filter
  • removeFilters(redraw) - Remove all filters
  • getItems() - Get all items
  • getHeads() - Get all headers
  • getView() - Get current view
  • getFilteredItems() - Get filtered items
  • getSelectedItems() - Get selected items
  • getStoredKeys() - Get stored keys
const table = Metro.getPlugin("#myTable", "table");
table.search("John");
table.page(2);
EventDescription
onDrawTriggered when table is drawn
onDrawRowTriggered when a row is drawn
onDrawCellTriggered when a cell is drawn
onAppendRowTriggered when a row is appended
onAppendCellTriggered when a cell is appended
onSortStartTriggered when sorting starts
onSortStopTriggered when sorting stops
onSortItemSwitchTriggered when items are switched during sorting
onSearchTriggered when search is performed
onRowsCountChangeTriggered when rows count changes
onDataLoadTriggered when data loading starts
onDataLoadErrorTriggered when data loading fails
onDataLoadedTriggered when data is loaded
onDataLoadEndTriggered when data loading ends
onDataSaveErrorTriggered when data saving fails
onFilterRowAcceptedTriggered when a row passes filter
onFilterRowDeclinedTriggered when a row is filtered out
onCheckClickTriggered when a check is clicked
onCheckClickAllTriggered when check all is clicked
onCheckDrawTriggered when checks are drawn
onViewSaveTriggered when view is saved
onViewGetTriggered when view is retrieved
onViewCreatedTriggered when view is created
onTableCreateTriggered when table is created
onSkipTriggered when skip is used
onDrawHeadTriggered when head is drawn
onDrawFootTriggered when foot is drawn
onDrawBodyTriggered when body is drawn
onInspectorOpenTriggered when inspector is opened
onInspectorCloseTriggered when inspector is closed
onFieldShowTriggered when a field is shown
onFieldHideTriggered when a field is hidden
onFieldToggleTriggered when a field is toggled
onFieldMoveTriggered when a field is moved
onSortTriggered when table is sorted
onPageChangeTriggered when page changes
onRowClickTriggered when a row is clicked
onRowDblClickTriggered when a row is double-clicked
onCellClickTriggered when a cell is clicked
onCellDblClickTriggered when a cell is double-clicked
VariableDefault (Light)Dark ModeDescription
--table-inspector-border-radius10px10pxBorder radius for inspector
--table-head-font-size14px14pxFont size for table header
--table-caption-font-size16px16pxFont size for table caption
--table-footer-font-size14px14pxFont size for table footer
--table-body-font-size16px16pxFont size for table body
--table-border-radius6px6pxBorder radius for table
--table-border-color#e8e8e8#4a4d51Border color for table
--table-color#191919#dbdfe7Text color for table
--table-backgroundtransparenttransparentBackground color for table
--table-header-background#fafafa#1b1b1eBackground color for header
--table-header-color#191919#efefefText color for header
--table-sortable-background#e8e8e8#26282eBackground color for sortable columns
--table-sortable-color#000000#ffffffText color for sortable columns
--table-selected-background#d4e2ff#2e436eBackground color for selected rows/cells
--table-selected-color#000000#ffffffText color for selected rows/cells
--table-striped-background#f8f8f8#26282eBackground color for striped rows
--table-hover-background#eaeaea#323437Background color for hover
--table-hover-color#191919#ffffffText color for hover
--table-inspector-background#ffffff#26282eBackground color for inspector
--table-inspector-border-color#e8e8e8#4a4d51Border color for inspector
--table-inspector-color#191919#dbdfe7Text color for inspector
#my-table {
--table-border-color: #007bff;
--table-header-background: #0056b3;
--table-header-color: white;
--table-hover-background: #e6f2ff;
}
  • .table - Base class for tables
  • .table-component - Container for the table component
  • .table-container - Container for the table
  • .table-top - Top section of the table (search, rows selector)
  • .table-bottom - Bottom section of the table (pagination, info)
  • .table-info - Table information section
  • .table-pagination - Pagination section
  • .table-skip - Skip section
  • .table-inspector - Inspector panel
  • .thead, .tbody, .tfoot - Table sections
  • .tr - Table row
  • .th, .td - Table cells
  • .fixed-layout - Fixed table layout
  • .striped - Striped rows
  • .inverse-striped - Inverse striped rows
  • .row-hover - Row hover effect
  • .cell-hover - Cell hover effect
  • .table-border - Border around the table
  • .cell-border - Border around cells
  • .row-border - Border between rows
  • .subcompact - Smaller padding and font size
  • .compact - Small padding and font size
  • .responsive-* - Responsive tables (xs, sm, md, lg, xl, xxl)
  • .fixed-header - Fixed header
  • .sortable-column - Sortable column
  • .sort-asc, .sort-desc - Sort direction indicators
  • .selected - Selected row or cell
  • The table component can load data from various sources: HTML, JSON, or AJAX.
  • For large datasets, consider using pagination and limiting the number of rows per page.
  • Custom cell rendering can be achieved using the onDrawCell event.
  • The inspector allows users to customize the table view by showing/hiding columns and changing their order.
  • For responsive tables, use the appropriate responsive class based on your needs.
  • Always provide meaningful column headers to improve usability.
  • Use appropriate styling classes based on the data being displayed.
  • For tables with many columns, consider enabling horizontal scrolling.
  • Implement custom cell rendering for complex data types.
  • Use the inspector for tables with many columns to allow users to customize their view.
  • For better performance with large datasets, consider using server-side pagination and filtering.
  • Set appropriate search fields to improve search functionality.
  • Use the cellWrapper option to improve the display of long text in cells.