ホームページ  >  記事  >  ウェブフロントエンド  >  ここでは、jQuery Datatable でカーソルベースのページネーションを実装する方法を説明します。

ここでは、jQuery Datatable でカーソルベースのページネーションを実装する方法を説明します。

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-09-24 06:17:02769ブラウズ

Here

Web アプリケーションで大規模なデータセットを操作する場合、ページネーションはパフォーマンスとユーザー エクスペリエンスにとって非常に重要です。データ テーブルで一般的に使用される標準のオフセット ベースのページネーションは、大規模なデータセットでは非効率的になる可能性があります。

カーソルベースのページネーションは、特にリアルタイムの更新や大規模なデータ読み込みを処理する場合に、よりパフォーマンスの高い代替手段を提供します。この記事では、jQuery DataTable にカーソルベースのページネーションを実装する方法を説明します。

jQuery DataTable でカーソルベースのページネーションを実装する手順

1.環境のセットアップ
ページネーション ロジックに入る前に、次のものが揃っていることを確認してください:

私。 jQuery
ii. DataTables プラグイン
iii.カーソルベースのページネーションをサポートするバックエンド API (またはデータベース)

2.バックエンド API の構成
カーソルベースのページネーションは、必要なデータを返すためにバックエンドに大きく依存します。次のような JSON 応答を返す REST API を使用していると仮定しましょう。

データ: レコードの配列
カーソル: データセット内の現在位置を示す、ID やタイムスタンプなどの一意の識別子。

サーバーからのページ分割された応答の例を次に示します。

{
  "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"
   }
}

3.jQuery DataTable の初期化
DataTable は jQuery を使用して初期化され、バックエンド API にリンクされます。基本的な構造は次のとおりです:

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.ページネーションコントロールをカスタマイズする

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.API とフロントエンド同期の処理
ユーザーが [次へ] または [前へ] ボタンをクリックするたびに、カーソルが更新され、バックエンドに送信されます。バックエンドは、現在のカーソル位置から開始してデータベースからレコードを取得し、適切なデータセットを DataTable に返します。

要点は次のとおりです: ここをクリックしてください

結論
カーソルベースのページネーションは、大規模なデータセットまたはリアルタイム アプリケーションを操作する場合の実用的で効率的なアプローチです。 jQuery DataTable にカーソルベースのページネーションを実装することで、パフォーマンスが向上し、ユーザー エクスペリエンスが向上し、正確なデータ処理が保証されます。この手法は、高速、スケーラブル、信頼性の高いデータ管理を必要とする最新のアプリケーションに特に役立ちます。

このガイドが、独自のプロジェクトでカーソルベースのページネーションを実装するのに役立つことを願っています。コーディングを楽しんでください!

以上がここでは、jQuery Datatable でカーソルベースのページネーションを実装する方法を説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。