Searching
Search in a specific field
Use search-field
and search-value
props to search for result in a specific field. If you don't pass the search-field
prop, it will search in all fields.
⚠️ Attention: Searching feature is only available in client-side mode. In server-side mode, you need to request searched data from server when you navigate to a new page. Click here to check more information about server-side mode
Example
By default, vue3-easy-data-table
doesn't provide a search input, but you can provide your own search input element like this:
<template>
<span>search field:</span>
<select v-model="searchField">
<option>player</option>
<option>team</option>
</select>
<br/>
<span>search value: </span>
<input type="text" v-model="searchValue">
<EasyDataTable
:headers="headers"
:items="items"
:search-field="searchField"
:search-value="searchValue"
/>
</template>
<script lang="ts" setup>
import { ref } from "vue";
import type { Header, Item } from "vue3-easy-data-table";
const searchField = ref("player");
const searchValue = ref("Stephen Curry");
const headers: Header[] = [
{ text: "PLAYER", value: "player" },
{ text: "TEAM", value: "team"},
{ text: "NUMBER", value: "number"},
{ text: "POSITION", value: "position"},
{ text: "HEIGHT", value: "height"},
{ text: "WEIGHT (lbs)", value: "weight", sortable: true},
{ text: "LAST ATTENDED", value: "lastAttended"},
{ text: "COUNTRY", value: "country"},
];
const items: Item[] = [
{ "player": "Stephen Curry", "team": "GSW", "number": 30, "position": 'G', "height": '6-2', "weight": 185, "lastAttended": "Davidson", "country": "USA"},
{ "player": "Lebron James", "team": "LAL", "number": 6, "position": 'F', "height": '6-9', "weight": 250, "lastAttended": "St. Vincent-St. Mary HS (OH)", "country": "USA"},
{ "player": "Kevin Durant", "team": "BKN", "number": 7, "position": 'F', "height": '6-10', "weight": 240, "lastAttended": "Texas-Austin", "country": "USA"},
{ "player": "Giannis Antetokounmpo", "team": "MIL", "number": 34, "position": 'F', "height": '6-11', "weight": 242, "lastAttended": "Filathlitikos", "country": "Greece"},
];
</script>
PLAYER | TEAM | NUMBER | POSITION | HEIGHT | WEIGHT (lbs) | LAST ATTENDED | COUNTRY |
---|---|---|---|---|---|---|---|
Stephen Curry | GSW | 30 | G | 6-2 | 185 | Davidson | USA |
Search across multiple fields
Set a fields array for the search-field
prop.
Example:
<template>
<span>search value: </span>
<input type="text" v-model="searchValue">
<EasyDataTable
:headers="headers"
:items="items"
:search-field="searchField"
:search-value="searchValue"
/>
</template>
<script lang="ts" setup>
const searchField = ["number", "weight"];
const searchValue = ref(0);
// omit ...
</script>
PLAYER | TEAM | NUMBER | POSITION | HEIGHT | WEIGHT (lbs) | LAST ATTENDED | COUNTRY |
---|---|---|---|---|---|---|---|
Stephen Curry | GSW | 30 | G | 6-2 | 185 | Davidson | USA |
Lebron James | LAL | 6 | F | 6-9 | 250 | St. Vincent-St. Mary HS (OH) | USA |
Kevin Durant | BKN | 7 | F | 6-10 | 240 | Texas-Austin | USA |