MeldUI

Data Table: Basic Usage

Setting up a basic data table with sorting, pagination, and search.

Basic Table

A minimal DataTable with columns, sorting, pagination, and a search input. The onServerSideChange callback fires whenever the user sorts, filters, or paginates — you fetch data from your API and update the reactive data and pageCount.

Core Props

PropTypeDefaultDescription
columnsColumnDef<TData>[]requiredColumn definitions from createColumnHelper
dataTData[]requiredThe current page of data
pageCountnumberrequiredTotal number of pages
onServerSideChange(state) => voidrequiredCallback when sort/filter/page changes
searchColumnstring-Column ID to search on
searchPlaceholderstring-Placeholder text for search input
defaultPerPagenumber10Default rows per page
pageSizeOptionsnumber[][10,20,30,40,50]Available page size options
loadingbooleanfalseShow loading state
errorstring-Show error message
density'compact' | 'comfortable' | 'spacious''comfortable'Row density
maxHeightstring'600px'Max height with vertical scroll

Pagination Position

// Show pagination at top, bottom, or both
<DataTable pagination-position="both" />
<DataTable pagination-position="top" />

Exposed Methods

Access these via a template ref:

<script setup>
const tableRef = ref()

// Reset all state
tableRef.value?.resetAll()

// Refresh current data
tableRef.value?.refresh()
</script>

<template>
  <DataTable ref="tableRef" ... />
</template>
MethodDescription
resetFilters()Clear all active filters
resetSorting()Clear sorting
resetSelection()Deselect all rows
resetPagination()Go to page 1
resetAll()Reset everything
refresh()Re-trigger the server-side callback