現在 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 と一致するため、完全に収まります。