Beispielcode zur Implementierung einer dynamischen Spaltenfilterung in einer Vue+Element-Tabelle

Beispielcode zur Implementierung einer dynamischen Spaltenfilterung in einer Vue+Element-Tabelle

Anforderung: Bei der Anzeige von Daten in einer Liste müssen viele Informationen angezeigt werden, wodurch die Tabelle horizontal sehr lang wird. Die Anzeige ist nicht klar genug und Benutzer haben möglicherweise das Gefühl, dass sie bei der Verwendung die wichtigsten Punkte nicht erfassen können.

Stellen Sie sich eine Implementierung vor: Der Benutzer wählt manuell aus, ob die Spalten der Tabelle ausgeblendet oder angezeigt werden sollen. Der Auswahlstatus des Benutzers wird aufgezeichnet und bleibt beim nächsten Aufrufen der Tabelle durch den Benutzer erhalten.

Das Wirkungsdiagramm sieht wie folgt aus:

Original:

Bildbeschreibung hier einfügen

Deaktivieren Sie die Standardeinstellung, wenn Sie sie nicht benötigen:

Bildbeschreibung hier einfügen

Implementierungscode:
Der HTML-Teil verwendet eine Mehrfachauswahlfeldkomponente, um Spaltenoptionen anzuzeigen, und verwendet v-if="colData[i].istrue" um die Anzeige und Ausblendung zu steuern. Die Spaltenoptionen werden an das Kontrollkästchen übergeben und dann wird das Kontrollkästchenereignis gebunden.

<el-popover placement="rechts" title="Spaltenfilter" trigger="klick" width="420">            
	<el-checkbox-group v-model="checkedColumns" size="mini">
		<el-checkbox v-for="Element in CheckBoxGroup" :key="Element" :label="Element" :value="Element"></el-checkbox>
	</el-checkbox-group>
	<el-button slot="reference" type="primary" size="small" plain><i class="el-icon-arrow-down el-icon-menu" />Listenelement-Anzeigefilter</el-button>
</el-popover>
<el-table :data="Anwesenheitsliste" @sort-change="sort" highlight-current-row :row-class-name="Ferienzeile" @selection-change="Alles bearbeiten" ref="multipleTable">
	<el-table-column Typ="Auswahl" Breite="55" Ausrichtung="Mitte"></el-table-column>
		<el-table-column label="Grundlegende Informationen zu Mitarbeitern">
		<el-table-column v-if="colData[0].istrue" align="center" prop="user_id" label="Arbeitsnr." width="80" fest></el-table-column>
		<el-table-column v-if="colData[1].istrue" align="center" prop="name" label="Anzahl" width="80" fixed></el-table-column>
		<el-table-column v-if="colData[2].istrue" align="center" prop="Alter" label="Alter" width="60"></el-table-column>
		<el-table-column v-if="colData[3].istrue" align="center" prop="gender" label="Geschlecht" width="80"></el-table-column>
		<el-table-column v-if="colData[4].istrue" align="center" prop="department" label="Abteilungsname" width="100"></el-table-column>
	</el-Tabellenspalte>
	......

Der Datenteil, in dem JS-Daten gespeichert werden

	//Liste dynamisch ausblenden colData: [
	   { title: "Arbeitsnummer", istrue: true },
	   { Titel: "Name", istrue: true },
	   { title: "Alter", istrue: true },
	   { title: "Geschlecht", istrue: true },
	   { title: "Abteilungsname", istrue: true },	   
	 ],
	 checkBoxGroup: [],
	 geprüfte Spalten: [],

Teil der Implementierung der js-Methode

erstellt() {      
	  // Spaltenfilterung this.colData.forEach((item, index) => {
	    dies.checkBoxGroup.push(item.title);
	    dies.checkedColumns.push(item.title);
	  })
	  diese.checkedColumns = diese.checkedColumns
	  let UnData = localStorage.getItem(this.colTable)
	  UnData = JSON.parse(UnData)
	  if (UnData != null) {
	    this.checkedColumns = this.checkedColumns.filter((item) => {
	      gibt !UnData.includes(Element) zurück
	    })
	  }
	},
 // Überwachungsspalte ausblenden watch: {
   geprüfteSpalten(Wert,Wert) {
     let arr = this.checkBoxGroup.filter(i => !val.includes(i)); // Nicht aktiviert localStorage.setItem(this.colTable, JSON.stringify(arr))
     dies.colData.filter(i => {
       wenn (arr.indexOf(i.title) != -1) {
         i.istrue = falsch;
       } anders {
         i.istrue = wahr;
       }
     });
   }
 },

Dadurch wird es möglich und der ausgewählte Status wird beim Aktualisieren der Seite aufgezeichnet. Ursprünglich wollte ich ein Auswahlfeld „Alles auswählen“ hinzufügen, aber es wurde letztendlich nicht implementiert. Lassen Sie es uns zunächst auf diese Weise verwenden. Aber es muss einen besseren Weg geben. Ich werde es nach der Optimierung aktualisieren ~

Damit ist dieser Artikel über den Beispielcode zur Implementierung der dynamischen Spaltenfilterung in der Vue+Elementtabelle abgeschlossen. Weitere Inhalte zur dynamischen Spaltenfilterung in der Elementtabelle finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des dynamischen Formulars und der dynamischen Tabelle von Vue+Element (Backend sendet Konfiguration, Front-End generiert dynamisch)
  • Schritte zum dynamischen Zusammenführen von Tabellen in Elementen
  • Vue+element erstellt dynamische Formulare und generiert dynamisch Zeilen und Spalten von Tabellen
  • Beispielcode zum dynamischen Zusammenführen von ElementUI-Tabellen
  • Detaillierte Erläuterung der Schreibmethode der dynamischen Spaltendarstellung der VUE2.0 + ElementUI2.0-Tabelle el-table loop
  • Methode zur Fehlerbehebung bei der Anzeige einer leeren dynamischen Spalte in der Element-UI-Tabelle
  • Element-Beispielcode zum Implementieren dynamischer Tabellen

<<:  Einfaches Anwendungsbeispiel für eine rekursive Vue-Komponente

>>:  Zwei Möglichkeiten zum Einführen von SVG-Symbolen in Vue

Artikel empfehlen

Quellcodeanalyse des Nodejs-Modulsystems

Inhaltsverzeichnis Überblick CommonJS-Spezifikati...

Was ist ein MySQL-Index? Fragen Sie, wenn Sie es nicht verstehen

Inhaltsverzeichnis Überblick Vom Binärbaum zum B+...

CSS-Float-Eigenschaftsdiagramm, Details der Float-Eigenschaft

Die korrekte Verwendung der CSS-Float-Eigenschaft...

Mehrere Möglichkeiten zum Kapseln von Breadcrumb-Funktionskomponenten in Vue3

Inhaltsverzeichnis Vorwort 1. Warum brauchen wir ...

So deinstallieren und installieren Sie Tomcat neu (mit Bildern und Text)

Deinstallieren Sie tomcat9 1. Da die Installation...

Umfassendes Verständnis des html.css-Überlaufs

Umfassendes Verständnis des html.css-Überlaufs XM...

JavaScript, um den Effekt des Klickens auf das Untermenü zu erzielen

In diesem Artikel wird der spezifische JavaScript...

Tutorial zur Installation von MySQL 5.7.9 mit RPM-Paket unter CentOS 7

Aufgezeichnetes MySQL 5.7.9-Installationstutorial...

Kurze Analyse der Einführung und grundlegenden Verwendung von Promise

Promise ist eine neue Lösung für die asynchrone P...

Tutorial zu HTML-Tabellen-Tags (13): Regeln für interne Rahmenstilattribute

Mit REGELN kann die Art der inneren Rahmen der Ta...

Gedanken zu copy_{to, from}_user() im Linux-Kernel

Inhaltsverzeichnis 1. Was ist copy_{to,from}_user...

CSS-Code zur Steuerung der Hintergrundfarbe der Webseite

Ich glaube, jeder macht sich oft Sorgen, ob er Bi...

Detaillierter Prozess der Installation von Jenkins-2.249.3-1.1 mit Docker

Inhaltsverzeichnis 1. Docker installieren 2. Zieh...