vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコード

vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコード

要件: データをリスト形式で表示する場合、表示すべき情報項目が多く、表が横に長くなってしまいます。表示が明確でなく、使用時に要点が掴めないと感じる場合があります。

次のような実装を想像してください。ユーザーはテーブルの列を非表示にするか表示するかを手動で選択し、ユーザーの選択ステータスが記録され、ユーザーが次にテーブルに入ったときに選択ステータスが保持されます。

効果図は以下のとおりです。

オリジナル:

ここに画像の説明を挿入

必要ない場合はデフォルトのチェックを外します。

ここに画像の説明を挿入

実装コード:
HTML 部分では、複数選択ボックス コンポーネントを使用して列オプションを表示し、 v-if="colData[i].istrue"を使用して表示と非表示を制御します。列オプションはチェックボックスに渡され、チェック イベントがバインドされます。

<el-popover placement="right" title="列フィルター" trigger="click" width="420">            
	<el-checkbox-group v-model="checkedColumns" size="mini">
		<el-checkbox v-for="checkBoxGroup 内の項目" :key="項目" :label="項目" :value="項目"></el-checkbox>
	</el-チェックボックスグループ>
	<el-button slot="reference" type="primary" size="small" plain><i class="el-icon-arrow-down el-icon-menu" />リスト項目表示フィルター</el-button>
</el-popover>
<el-table :data="attendanceList" @sort-change="sort" highlight-current-row :row-class-name="holidayRow" @selection-change="editAll" ref="multipleTable">
	<el-table-column type="selection" width="55" align="center"></el-table-column>
		<el-table-column label="従業員の基本情報">
		<el-table-column v-if="colData[0].istrue" align="center" prop="user_id" label="作品番号。" width="80" 固定></el-table-column>
		<el-table-column v-if="colData[1].istrue" align="center" prop="name" label="姓名" width="80" fixed></el-table-column>
		<el-table-column v-if="colData[2].istrue" align="center" prop="age" label="age" width="60"></el-table-column>
		<el-table-column v-if="colData[3].istrue" align="center" prop="gender" label="性別" width="80"></el-table-column>
		<el-table-column v-if="colData[4].istrue" align="center" prop="department" label="部署名" width="100"></el-table-column>
	</el-table-column>
	......

jsデータが保存されるデータ部分

	// リストの動的非表示 colData: [
	   { title: "作品番号", istrue: true },
	   { title: "名前", istrue: true },
	   { title: "年齢", istrue: true },
	   { title: "性別", istrue: true },
	   { title: "部門名", istrue: true },	   
	 ]、
	 チェックボックスグループ: [],
	 チェックされた列: [],

jsメソッド実装部分

作成された() {      
	  // 列フィルタリング this.colData.forEach((item, index) => {
	    this.checkBoxGroup.push(item.title);
	    this.checkedColumns.push(item.title);
	  })
	  this.checkedColumns = this.checkedColumns
	  UnData = localStorage.getItem(this.colTable) とします。
	  UnData = JSON.parse(UnData)
	  もし(UnData!= null){
	    this.checkedColumns = this.checkedColumns.filter((item) => {
	      !UnData.includes(item) を返します
	    })
	  }
	},
 // 監視列の非表示ウォッチ: {
   チェックされた列(val,value) {
     let arr = this.checkBoxGroup.filter(i => !val.includes(i)); // チェックなし localStorage.setItem(this.colTable, JSON.stringify(arr))
     this.colData.filter(i => {
       (arr.indexOf(i.title) != -1) の場合 {
         i.istrue = false;
       } それ以外 {
         i.istrue = 真;
       }
     });
   }
 },

これで可能になり、ページを更新すると選択状態が記録されるようになります。 当初は全選択の選択ボックスを追加したかったのですが、結局実装されませんでした。 まずはこの方法で使ってみましょう。でも、もっと良い方法があるはずなので、最適化してから更新します〜

これで、vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコードに関するこの記事は終了です。element テーブルでの動的な列フィルタリングに関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue+Element の動的フォーム、動的テーブル (バックエンドが設定を送信し、フロントエンドが動的に生成) の詳細な説明
  • 要素内のテーブルを動的にマージする手順
  • Vue+elementは動的なフォームを作成し、テーブルの行と列を動的に生成します
  • elementUI テーブルの動的マージのサンプル コード
  • VUE2.0+ElementUI2.0 テーブル el-table loop 動的列レンダリングの書き方を詳しく解説
  • 要素 UI テーブルの動的列に空白が表示されるバグ修正方法
  • 動的テーブルを実装するための要素サンプルコード

<<:  Vue再帰コンポーネントの簡単な使用例

>>:  Vue で SVG アイコンを導入する 2 つの方法

推薦する

JSに関する7つの面接の質問、あなたはいくつ正しく答えられますか

序文JavaScript では、これは関数呼び出しコンテキストです。この動作が非常に複雑であるからこ...

Dockerコンテナの自動終了を停止する方法の詳細な説明

この記事では、Docker コンテナとフロントエンド プロセスの関係と、コンテナを永続的に実行できる...

Apache ストレステストツールのインストールと使用

1. ダウンロードApacheの公式サイトhttp://httpd.apache.org/にアクセス...

Linux LVM 論理ボリューム構成プロセス (作成、増加、削減、削除、アンインストール) の詳細な説明

Linux LVM論理ボリューム構成プロセスの詳細な説明多くの Linux ユーザーは、オペレーティ...

タグが新しいページを開くかどうかという問題。主要ウェブサイトの開設状況をまとめました

a タグが新しいページを開くかどうか: (1)百度百科事典:ヘッダーが異なる場合は新しいページが開き...

IE における条件付きコメントの利点と欠点

IE の条件付きコメントは、通常の (X)HTML コメントに対する Microsoft 独自の (...

Dockerコンテナ終了エラーコードの手順

実行後、一部の Docker コンテナが終了することがあります。原因を調べるには、Docker コン...

Vueのレスポンシブシステムの原理の詳細な説明

目次Vueのレスポンシブシステムの基本原則1. Object.definePropertyの使い方を...

vueを使用して登録ページの効果を実現し、vueを使用してSMS認証コードログインを実現します

この記事の例では、登録ページの効果を実現するためのVueの具体的なコードを参考までに共有しています。...

Centos7.3 で mysql5.7.18 をインストールして初期パスワードを変更する方法

この記事では、Centos7.3でのmysql5.7.18のインストールと初期パスワードの変更につい...

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

MYSQL から MARIADB へのプロジェクト移行に関するチュートリアル

データベース (MySQL) を準備します。すでに MySQL をお持ちの場合は、これを無視できます...

XHTML 入門チュートリアル: テーブルタグの応用

<br />テーブルは XHTML では扱いにくいタグなので、このセクションで理解するだ...

VMware Workstation に Windows Server 2019 をインストールする (グラフィック チュートリアル)

キーの入力を求められた場合は、[キーがありません]を選択します。デスクトップエクスペリエンスを選択す...

MySQLにおける時刻日付型と文字列型の選択について

目次1. DATETIMEとTIMESTAMPの使用1. 類似点2. 相違点3. 選択2. varc...