"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Voici comment j'implémente la pagination basée sur le curseur dans jQuery Datatable.

Voici comment j'implémente la pagination basée sur le curseur dans jQuery Datatable.

Publié le 2024-11-05
Parcourir:387

Here

Lorsque vous travaillez avec de grands ensembles de données dans des applications Web, la pagination est cruciale pour les performances et l'expérience utilisateur. La pagination standard basée sur le décalage, couramment utilisée avec les tableaux de données, peut s'avérer inefficace pour les grands ensembles de données.

La pagination basée sur le curseur offre une alternative plus performante, en particulier lors de la gestion des mises à jour en temps réel ou des charges de données volumineuses. Dans cet article, je vais vous expliquer comment j'implémente la pagination basée sur le curseur dans un DataTable jQuery.

Étapes pour implémenter la pagination basée sur le curseur dans jQuery DataTable

1.Configuration de l'environnement
Avant de plonger dans la logique de pagination, assurez-vous d'avoir les éléments suivants :

je. jQuery
ii. Plugin DataTables
iii. API backend (ou base de données) qui prend en charge la pagination basée sur le curseur

2.Configuration de l'API backend
La pagination basée sur un curseur s'appuie fortement sur le backend pour renvoyer les données nécessaires. Supposons que nous travaillons avec une API REST qui renvoie une réponse JSON, notamment :

Données : un tableau d'enregistrements
Curseur : un identifiant unique, tel qu'un identifiant ou un horodatage, indiquant la position actuelle dans l'ensemble de données.

Voici un exemple de réponse paginée du serveur :

{
  "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.Initialisation de DataTable jQuery
Le DataTable est initialisé à l'aide de jQuery et lié à l'API backend. Voici une structure de base :

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.Personnaliser les contrôles de pagination

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.Gestion de l'API et de la synchronisation frontend
Chaque fois qu'un utilisateur clique sur le bouton Suivant ou Précédent, le curseur est mis à jour et envoyé au backend. Le backend récupère les enregistrements de la base de données, en commençant par la position actuelle du curseur, et renvoie l'ensemble de données approprié au DataTable.

Voici l'essentiel : cliquez ici

Conclusion
La pagination basée sur un curseur est une approche pratique et efficace lorsque vous travaillez avec de grands ensembles de données ou des applications en temps réel. En implémentant la pagination basée sur le curseur dans jQuery DataTable, vous améliorez les performances, améliorez l'expérience utilisateur et garantissez une gestion précise des données. Cette technique est particulièrement utile pour les applications modernes qui exigent une gestion des données rapide, évolutive et fiable.

J'espère que ce guide vous aidera à implémenter la pagination basée sur le curseur dans vos propres projets. Bon codage !

Déclaration de sortie Cet article est reproduit à l'adresse : https://dev.to/connectaryal/heres-how-i-implement-cursor-based-pagination-in-jquery-datatable-hoo?1 En cas de violation, veuillez contacter study_golang@163. .com pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3