2

IQueryable を返すメソッドは必要ありませんでしたが、ページング クエリをメモリではなくデータベースで実行したいと考えていました。この記事では、IQueryable を介してデータのサブセットのみを公開する方法について説明します。

記事にあるGetRangeメソッドを以下のように修正しました。

    public IEnumerable<T> GetRange<TKey>(int page, int pageSize, Expression<Func<T, TKey>> keySelector, bool ascending )
    {

        IOrderedQueryable<T> sourceOrdered = null;
        sourceOrdered = ascending ? source.OrderBy(keySelector) : source.OrderByDescending(keySelector);

        return sourceOrdered.Skip((page - 1) * pageSize).Take(pageSize);

    }

そして、以下のように contrib IPagination を渡します。

  var productPagedList = productList.GetRange(page ?? 1, 10, p => p.SupplierID, false)
            .AsPagination(page ?? 1, 10);

ただし、グリッドは、ページャーを適切にレンダリングするために、合計レコード数を知る必要があります。このようにサービス層から公開された IQueryable のサブセットで MVCContrib グリッドを動作させる方法はありますか? または、どういうわけか、総レコード数をそれにフィードしますか? または他のヒントはありますか?

ありがとう

4

0 に答える 0