我有一个中继器,我需要分页,所以我正在使用 PagedDatasource。
鉴于:
string tag = Request.QueryString["category"];
并且标签变量不为空,则 PagedDataSource 分页失败,并出现以下错误:
异常详细信息:System.Web.HttpException:无法为未实现 ICollection 的数据源计算 Count。
在这一行:
lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " + pagedDS.PageCount.ToString();
注意:当标签变量为空时,分页工作正常。
完整代码如下:
string tag = Request.QueryString["category"];
var ba = new DataBase.BlogAdapter();
PagedDataSource pagedDS = new PagedDataSource();
pagedDS.AllowPaging = true;
pagedDS.PageSize = 3;
if (String.IsNullOrEmpty(tag))
{
pagedDS.DataSource = ba.GetArticles(null, null);
}
else
{
var t = new DataBase.Tag() { TagName = tag };
var tec = new DataBase.TagEqualityComparer();
pagedDS.DataSource = ba.GetArticles(null, null).Where(a => a.Tags.Contains(t, tec));
CurrentPage = 0;
}
pagedDS.CurrentPageIndex = CurrentPage;
// NEXT LINE FAILS IF "tag" IS NOT EMPTY
lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " + pagedDS.PageCount.ToString();