頁碼應該(以及可能的排序順序和方向)來自客戶端。因此,客戶端點擊一些頁面和比..
我個人使用某種過濾器,包含所有你需要的屬性。
使用該過濾器,您只需指定需要在網格中顯示的頁面以及每頁需要多少項目。
var pageNumber = 1;// current page should come from the client
var filter = new BaseFilter(){CurrentPage = pageNumber, ItemsPerPage = 30};
var items = GetItemsByFilter(filter, Query.LTE("SomeDate",DateTime.Now)),
SortBy.Ascending("SortField"));
//For basic paging you only following three properties
var totalCount = filter.TotalCount; // here will be total items count
var pagesCount = filter.TotalPagesCount; // here will be total pages count
// pageNumber = current page
此外,您可以從BasicFilter推導並添加所需的查詢,排序所需的任何屬性。 這裏過濾代碼(希望這將是對您有用):
public List<Item> GetItemsByFilter(BaseFilter filter,
QueryComplete query, SortByBuilder sort)
{
var resultItems = new List<Item>();
var cursor = Db.Data.FindAs<BsonItem>(query);
cursor.SetSortOrder(sort);
if (filter.IsNeedPaging)
{
cursor.SetSkip(filter.Skip).SetLimit(filter.Take);
filter.TotalCount = cursor.Count();
}
resultItems.AddRange(cursor);
return resultItems;
}
public class BaseFilter
{
private int _itemsPerPage = 10;
private int _skip = 0;
private int _currentPage = 1;
public BaseFilter()
{
IsNeedPaging = true;
}
public int Skip
{
get
{
if (_skip == 0)
_skip = (CurrentPage - 1) * _itemsPerPage;
return _skip;
}
set
{
_skip = value;
}
}
public int Take
{
get
{
return _itemsPerPage;
}
set
{
_itemsPerPage = value;
}
}
public bool IsNeedPaging { get; set; }
public int TotalCount { get; set; }
public int CurrentPage
{
get
{
return _currentPage;
}
set
{
_currentPage = value;
}
}
public int ItemsPerPage
{
get
{
return _itemsPerPage;
}
set
{
_itemsPerPage = value;
}
}
public int TotalPagesCount
{
get
{
return TotalCount/ItemsPerPage +
((TotalCount % ItemsPerPage > 0) ? 1 : 0);
}
}
}
目的是管理出來scoope項目未分頁方法。你有一個孤立的項目,你添加一個clik事件在另一個頁面的分頁視圖中打開,但這個點的頁碼需要打開嗎?我搜索打開選定的右側頁面。 – user325558 2011-03-02 16:44:34
僅使用客戶端項目的_id(無管理方向或訂單) – user325558 2011-03-02 16:52:14