3

現在 jqGrid を使用している既存の Web アプリケーションがあり、サーバー側のバックエンド全体がページ番号とページ長に基づいてページ分割された情報を返します。今、いくつかの部分で DataTables の使用を開始したいと考えています。そのページネーションは開始レコードと長さを使用しているため、バックエンド全体を変更する必要がないように、ページ番号を受け入れるように DataTables を構成する方法があるかどうかを知りたいです。

これに合わせて DataTables を構成または適応させる方法はありますか?

編集: 混乱を避けるために、クライアント側のページネーションではなく、サーバー側の処理機能を備えた DataTables について話しています。

編集 2: バックエンドがブラウザーからの要求を受け取り、応答する方法のコードを追加します。ASP.NET MVC4 です。

My Services は、次のようなメソッドで処理されているエンティティのデータのページで常に応答します。

Page<T> GetPage<TKey>(int pageNumber,
                      int pageSize,
                      Expression<Func<T, TKey>> orderBy,
                      bool ascending = true,
                      Expression<Func<T, bool>> predicate = null)

Page<T>これにより、次のようなオブジェクトが返されます。

public class Page<T> : IEnumerable<T>
{
    private readonly IList<T> _items;

    public IList<T> Items
    {
        get { return _items; }
    }

    public Page()
    {}

    public Page(int currentPage, IEnumerable<T> items, int itemsPerPage, int totalItems, int totalPages)
    {
        PageIndex = currentPage;
        _items = items.ToList();
        TotalItems = totalItems;
        PageSize = itemsPerPage;
        TotalPages = totalPages;
    }

    public int PageIndex { get; private set; }
    public int PageSize { get; private set; }
    public int TotalItems { get; private set; }
    public int TotalPages { get; private set; }

    public IEnumerator<T> GetEnumerator()
    {
        return _items.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

次に、アクション応答を返すときに、グリッド プラグインに必要な json 構造に一致させるために、これがコントローラーで Json に解析されます (一方、jqGrid または DataTables です)。

Web アプリケーションに大きな影響を与えるため、ページ構造とページネーションの仕組みを変更することはできません。そのため、それは議論の対象外です。Startレコードの代わりにPageNumberを送信するように DataTables を調整する方法を見つける必要があります。Lengthパラメーターは、私の側の PageSize と一致するため、完全に収まります

4

1 に答える 1