Heim > Web-Frontend > js-Tutorial > So implementieren Sie die Cursor-basierte Paginierung in jQuery Datatable.

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

Mary-Kate Olsen
Freigeben: 2024-09-24 06:17:02
Original
935 Leute haben es durchsucht

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 über Folgendes verfügen:

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": "john@example.com"},
    {"id": 102, "name": "Jane Smith", "email": "jane@example.com"}
  ],
  "pagination": {
     "next_cursor": "eyJpZCI6MTgsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
        "prev_cursor": "eyJpZCI6MTAsIl9wb2ludHNUb05leHRJdGVtcyI6ZmFsc2V9"
   }
}
Nach dem Login kopieren

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
    }
  },
});
Nach dem Login kopieren

4. Passen Sie die Paginierungssteuerung an

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');
Nach dem Login kopieren

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

Fazit
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!

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Cursor-basierte Paginierung in jQuery Datatable.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage