Eine kurze Diskussion zum Thema Ziehen und Sortieren von Elementen in Tabellen

Eine kurze Diskussion zum Thema Ziehen und Sortieren von Elementen in Tabellen

In letzter Zeit stoße ich bei der Verwendung von Elementtabellen häufig auf Sortierprobleme. Wenn es sich nur um eine einfache Sortierung handelt, hat der Elementbeamte eine bestimmte Methode angegeben

//Die Standardsortiermethode der Tabelle ist die Sortierung nach ID in absteigender Reihenfolge. Sie können die Reihenfolge ändern, z. B.
    <el-table :data="tableData" :default-sort="{prop: 'ID', order: 'descending'}">
      //Wenn das sortierbare Attribut festgelegt wird, wird die Sortierschaltfläche angezeigt <el-table-column prop="ID" label="Sitzplatznummer" sortierbar>
    </el-Tabelle>

Die offizielle Elementkomponente unterstützt jedoch keine Drag & Drop-Sortierung. Ich stelle hier sortablejs vor, um die Drag & Drop-Sortierfunktion zu implementieren.

sortablejs GitHub-Adresse

//Installieren Sie sortable.js
Mit NPM installieren:

$ npm installiere sortablejs --save

//In die Komponente importiere Sortable from 'sortablejs'

//Fügen Sie der Tabelle, die gezogen und sortiert werden muss, ein Ref-Attribut hinzu <el-table ref="dragTable">

//Drag-Ereignis hinzufügen, nachdem das Rendern der Daten erstellt wurde(){
   dies.getBanner()
},
Methoden:{
 async getBanner(Wert){
          warte auf apiGetBanner().then((res)=>{
               diese.bannerTable = res.data.data;
          })
         diese.alteListe = diese.bannerTable.map(v => v.id);
         diese.neueListe = diese.alteListe.slice();
         dies.$nextTick(() => {
             this.setSort() //Methode nach Datenrendering ausführen})
    }
    setzeSort() {
        const el = this.$refs.dragTable.$el.querySelectorAll(
          „.el-table__body-wrapper > Tabelle > tbody“
        )[0];
        dies.sortable = Sortable.create(el, {
         // Klassenname für den Drop-Platzhalter,
          ghostClass: "sortierbarer Geist", 
                setData: Funktion(Datentransfer) {
                dataTransfer.setData('Text', '')
            },
           //Drag beendet die Ausführung, evt führt den Drag-Parameter onEnd aus: evt => {
              //Festlegen, ob neu sortiert werden soll, wenn (evt.oldIndex !== evt.newIndex) {
                  lass Daten = {
                     id:this.bannerTable[evt.alterIndex].id,
                     banner_order:evt.newIndex
                  }
                  //Wenn die Datenübertragung fehlschlägt, stellen Sie die alte Sortierung wieder her apiPutBanner(data).catch(()=>{
                     const targetRow = this.bannerTable.splice(evt.oldIndex, 1)[0];
                     this.bannerTable.splice(evt.newIndex, 0, targetRow);
                  })
              }
            }
        })
    }
}

Wenn Sie die Spalte ziehen müssen, können Sie auf den folgenden Code verweisen. Der Code funktioniert nach dem gleichen Prinzip wie oben. Daher werde ich hier nicht ins Detail gehen.

//Zeile ziehen rowDrop() {
      const tbody = document.querySelector('.el-table__body-wrapper tbody')
      const _this = dies
      Sortable.create(tbody, {
        amEnde({ neuerIndex, alterIndex }) {
          const currRow = _this.tableData.splice(alterIndex, 1)[0]
          _this.tableData.splice(neuerIndex, 0, aktuelleZeile)
        }
      })
    },
    //Spalte ziehen columnDrop() {
      const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
      dies.sortable = Sortable.create(wrapperTr, {
        Animation: 180,
        Verzögerung: 0,
        am Ende: evt => {
          const oldItem = this.dropCol[evt.oldIndex]
          this.dropCol.splice(evt.alterIndex, 1)
          this.dropCol.splice(evt.neuerIndex, 0, altesElement)
        }
      })
    }

Dies ist das Ende dieses Artikels über das Problem der Drag-and-Drop-Sortierung von Elementtabellen. Weitere relevante Inhalte zur Drag-and-Drop-Sortierung von Elementtabellen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Vue verwendet vuedraggable, um eine verschachtelte mehrschichtige Drag & Drop-Sortierfunktion zu implementieren
  • Vue implementiert Auswahl-, Zieh- und Sortiereffekte basierend auf vuedraggable
  • Vue Drag-Komponente Vuedraggable API-Optionen zum gegenseitigen Ziehen und Sortieren zwischen Boxen
  • vuedraggable+element ui realisiert den Drag & Drop-Sortiereffekt von Seitensteuerelementen
  • Detaillierte Erklärung zur Verwendung von vuedraggable, einem Drag-and-Drop-Sortier-Plugin für Vue
  • Elementui-Tabellenkomponente + sortablejs zum Implementieren von Beispielcode für die Zeilensortierung per Drag & Drop
  • Detaillierte Anleitung zur Verwendung der Vue-Drag-Komponente vuedraggable
  • Verwenden Sie vuedraggable, um die Drag-Funktion von links nach rechts zu implementieren
  • Verwenden Sie Element + Vuedraggable, um das Hochladen von Bildern und das Sortieren per Drag & Drop zu realisieren.

<<:  Wie stellt MySQL eine Verbindung zum entsprechenden Clientprozess her?

>>:  Eine einfache Möglichkeit, mit dem HTML-Tag „Marquee“ einen Scroll-Effekt zu erzielen (unbedingt lesen)

Artikel empfehlen

Detaillierte Erklärung des Marquee-Attributs in HTML

Dieses Tag ist nicht Teil von HTML3.2 und wird nu...

Grundkenntnisse in HTML: ein erstes Verständnis von Webseiten

HTML ist die Abkürzung für Hypertext Markup Langua...

Detailliertes Tutorial zum Ersetzen von mysql8.0.17 in Windows 10

In diesem Artikel werden die spezifischen Schritt...

Installations-Tutorial für die Zip-Version von MySQL 5.7.18

Die MySQL 5.7.18 Zip-Version von MySQL ist nicht ...

Verwendung des MySQL-Zeitstempels

Vorwort: Zeitstempelfelder werden häufig in MySQL...

Docker stellt eine MySQL-Remoteverbindung bereit, um 2003-Probleme zu lösen

Herstellen einer Verbindung mit MySQL Hier verwen...

So entfernen Sie Wagenrücklaufzeichen aus Text in Linux

Machen Sie sich keine Sorgen, wenn Sie das Wagenr...

Detaillierte Erläuterung der bidirektionalen Bindung von Vue

Inhaltsverzeichnis 1. Zwei-Wege-Bindung 2. Wird d...

JavaScript zum Erzielen eines Fortschrittsbalkeneffekts

In diesem Artikelbeispiel wird der spezifische Ja...

C# implementiert MySQL-Befehlszeilensicherung und -wiederherstellung

Es gibt viele Tools zum Sichern von MySQL-Datenba...

Vue implementiert das Ziehen und Sortieren von Bildern

In diesem Artikelbeispiel wird der spezifische Co...

Problem beim Wechseln der Registerkarten für die Handschrift von React

Übergeordnete Datei importiere React, { useState ...

Beispielcode für HTML-Framesets

Dieser Artikel stellt ein möglichst einfaches Fra...