„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So implementieren Sie die Cursor-basierte Paginierung in jQuery Datatable.

So implementieren Sie die Cursor-basierte Paginierung in jQuery Datatable.

Veröffentlicht am 05.11.2024
Durchsuche:537

Here

Bei der Arbeit mit großen Datensätzen in Webanwendungen ist die Paginierung entscheidend für Leistung und Benutzererfahrung. Die standardmäßige offsetbasierte Paginierung, die üblicherweise bei Datentabellen verwendet wird, kann bei großen Datensätzen ineffizient sein.

Cursorbasierte Paginierung bietet eine leistungsfähigere Alternative, insbesondere bei der Verarbeitung von Echtzeitaktualisierungen oder großen Datenmengen. In diesem Artikel erkläre ich Ihnen, wie ich die Cursor-basierte Paginierung in einer jQuery-Datentabelle umsetze.

Schritte zum Implementieren der Cursor-basierten Paginierung in jQuery DataTable

1.Einrichten der Umgebung
Bevor Sie sich mit der Paginierungslogik befassen, stellen Sie sicher, dass Sie Folgendes haben:

ich. jQuery
ii. DataTables-Plugin
iii. Backend-API (oder Datenbank), die die Cursor-basierte Paginierung unterstützt

2.Konfigurieren der Backend-API
Die Cursor-basierte Paginierung ist stark darauf angewiesen, dass das Backend die erforderlichen Daten zurückgibt. Nehmen wir an, wir arbeiten mit einer REST-API, die eine JSON-Antwort zurückgibt, einschließlich:

Daten: Ein Array von Datensätzen
Cursor: Ein eindeutiger Bezeichner, z. B. eine ID oder ein Zeitstempel, der die aktuelle Position im Datensatz angibt.

Hier ist ein Beispiel für eine paginierte Antwort vom Server:

{
  "data": [
    {"id": 101, "name": "John Doe", "email": "[email protected]"},
    {"id": 102, "name": "Jane Smith", "email": "[email protected]"}
  ],
  "pagination": {
     "next_cursor": "eyJpZCI6MTgsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
        "prev_cursor": "eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6ZmFsc2V9"
   }
}

3.jQuery DataTable-Initialisierung
Die DataTable wird mit jQuery initialisiert und mit der Backend-API verknüpft. Hier ist eine Grundstruktur:

var ajaxurl = "your-ajax-url";

var oTable = jQuery("#product_list_tbl").DataTable({
  preDrawCallback: function (settings) {
    var dt = jQuery("#product_list_tbl").DataTable();
    var settings = dt.settings();
    if (settings[0].jqXHR) {
      settings[0].jqXHR.abort();
    }
  },
  pagingType: 'simple',
  pageLength: 9,
  serverMethod: "post",
  ajax: {
    url: ajaxurl   "?action=search_ids",
    data: function (d) {
      d.search_id = jQuery("#search_id").val();
      // other params
    }
  },
});

4. Paginierungssteuerelemente anpassen

var ajaxurl = "your-ajax-url";

var oTable = jQuery("#product_list_tbl").DataTable({
  preDrawCallback: function (settings) {
    var dt = jQuery("#product_list_tbl").DataTable();
    var settings = dt.settings();
    if (settings[0].jqXHR) {
      settings[0].jqXHR.abort();
    }
  },
  pagingType: 'simple',
  pageLength: 9,
  serverMethod: "post",
  ajax: {
    url: ajaxurl   "?action=search_ids",
    data: function (d) {
      d.cursor = jQuery("#product_list_tbl").data('current-cursor') || '';
      d.search_id = jQuery("#search_id").val();
      // other params
    }
  },
  drawCallback: function (json) {

    const pagination = json.json.pagination;

    if (pagination.next_cursor) {
      jQuery(document).find('.paginate_button.next').removeClass('disabled');
      jQuery(document).find('.paginate_button.next').attr('data-cursor', json.json.pagination.next_cursor ?? '' );
    } else {
      jQuery(document).find('.paginate_button.next').addClass('disabled');
    }

    if (pagination.prev_cursor) {
      jQuery(document).find('.paginate_button.previous').removeClass('disabled');
      jQuery(document).find('.paginate_button.previous').attr('data-cursor', json.json.pagination.prev_cursor ?? '' );
    } else {
      jQuery(document).find('.paginate_button.previous').addClass('disabled');
    }

  },
});

 // Custom click handlers for pagination buttons
  jQuery(document).on('click', '#product_list_tbl_paginate .paginate_button', function(e) {
    e.preventDefault();
    e.stopPropagation(); // Prevent event from bubbling up

    // Only proceed if this is actually a 'next' or 'previous' button
    if (!jQuery(this).hasClass('next') && !jQuery(this).hasClass('previous')) {
      return;
    }

    var cursor = jQuery(this).attr('data-cursor');

    // Set the cursor directly on the table element
    jQuery("#product_list_tbl").data('current-cursor', cursor);

    // Reload the table with the new cursor
    oTable.ajax.reload();
  });

  // Disable default DataTables click handlers for pagination
  jQuery(document).off('click.DT', '#product_list_tbl_paginate .paginate_button');

5. Handhabung von API und Frontend-Synchronisierung
Jedes Mal, wenn ein Benutzer auf die Schaltfläche „Weiter“ oder „Zurück“ klickt, wird der Cursor aktualisiert und an das Backend gesendet. Das Backend ruft die Datensätze ab der aktuellen Cursorposition aus der Datenbank ab und gibt den entsprechenden Datensatz an die DataTable zurück.

Das Wesentliche: Klicken Sie hier

Abschluss
Cursorbasierte Paginierung ist ein praktischer und effizienter Ansatz bei der Arbeit mit großen Datensätzen oder Echtzeitanwendungen. Durch die Implementierung der Cursor-basierten Paginierung in jQuery DataTable steigern Sie die Leistung, verbessern die Benutzererfahrung und stellen eine genaue Datenverarbeitung sicher. Diese Technik ist besonders nützlich für moderne Anwendungen, die eine schnelle, skalierbare und zuverlässige Datenverwaltung erfordern.

Ich hoffe, dieser Leitfaden hilft Ihnen bei der Implementierung der Cursor-basierten Paginierung in Ihren eigenen Projekten. Viel Spaß beim Codieren!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/connectaryal/heres-how-i-implement-cursor-based-pagination-in-jquery-datatable-hoo?1 Bei Verstößen wenden Sie sich bitte an Study_golang@163 .com, um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3