Vue.js+Element Plusでのtableについて、以下の3点記載します!
- クラス操作(row-class-name)
- 特定の行にクラスをつけたい場合に使用
- クリックイベント(row-click)について
- 行クリックした場合に特定の関数を呼び出す
- 列固定表示
- 横スクロール時に一番左の列を固定表示にしてみる
Element Plusについて
まずは、Element Plusについて簡単に記載します。
Element Plusは、Vue3対応のUIライブラリです。
A Vue 3 UI Framework | Element Plus
A Vue 3 based component library for designers and developers
Element Plusのtableのクラス操作について
row-class-nameを使用して、特定の行にクラスをつけてみます。
以下サンプルコードです。
<template>
<el-table
ref="tableRef"
:data="users"
style="width: 100%"
border
:row-class-name="addClass"
>
<el-table-column
prop="Id"
label="ID"
/>
<el-table-column
prop="Name"
label="名前"
/>
<el-table-column
prop="bikou"
label="備考"
/>
</el-table>
</template>
<script>
import axios from "axios";
export default {
data() {
return {
users: []
}
},
mounted: function() {
axios.get('/list.json')
.then(response => (this.users = response.data))
.catch(error => console.log(error))
},
methods: {
addClass({ row }) {
// 条件に応じてクラスを追加
if (row.Id === "1") {
return 'add-class';
}
return ''; // デフォルトでクラスを付けない
},
},
}
</script>
「:row-class-name="addClass"
」でaddClass
を呼び出し、addClass
で追加するクラスを指定しています。
Element Plusのtableのクリックイベントについて
@row-clickを使用して、特定の行をクリック時に自前のメソッドを呼び出してみます。
以下サンプルコードです。
<template>
<el-table
ref="tableRef"
:data="users"
style="width: 100%"
border
@row-click="clickRow"
>
<el-table-column
prop="Id"
label="ID"
/>
<el-table-column
prop="Name"
label="名前"
/>
<el-table-column
prop="bikou"
label="備考"
/>
</el-table>
</template>
<script>
import axios from "axios";
export default {
data() {
return {
users: []
}
},
mounted: function() {
axios.get('/list.json')
.then(response => (this.users = response.data))
.catch(error => console.log(error))
},
methods: {
clickRow( row ) {
alert(row.Id);
},
},
}
</script>
「@row-click="clickRow"
」でclickRow
を呼び出しています。clickRow
に処理をしたい内容(詳細の表示とか)を記載できます。
Element Plusのtableの列固定表示について
カラムの設定で「fixed=“left”」を指定すると列固定表示できます。
以下サンプルコードです。
<template>
<el-table
ref="tableRef"
:data="users"
style="width: 100%"
border
@row-click="clickRow"
>
<el-table-column
prop="Id"
label="ID"
fixed="left"
width="300"
/>
<el-table-column
prop="Name"
label="名前"
width="300"
/>
<el-table-column
prop="bikou"
label="備考"
width="300"
/>
</el-table>
</template>
まとめ
Element Plusのテーブルについて以下の3点記載しました。どれも簡単に設定できましたーElement Plus便利!!
- クラス操作(row-class-name)
- 特定の行にクラスをつけたい場合に使用
- クリックイベント(row-click)について
- 行クリックした場合に特定の関数を呼び出す
- 列固定表示
- 横スクロール時に一番左の列を固定表示にしてみる