我有一个搜索页面,可以在多个页面上返回我的结果。这非常有效。这是代码:
//Paging Variables
var pageSize = 6;
var totalPages = 0;
var count = 0;
var page = UrlData[0].IsInt() ? UrlData[0].AsInt() : 1;
var offset = (page -1) * pageSize;
string selectQueryString = "SELECT * FROM Property_Info";
queryResults = db.Query(selectQueryString);
count = queryResults.Count();
totalPages = count/pageSize;
if(count % pageSize > 0){
totalPages += 1;
}
selectQueryString += "OFFSET @0 ROWS FETCH NEXT @1 ROWS ONLY;";
queryResults = db.Query(selectQueryString, offset, pageSize);
我遇到的问题是,我想让用户选择更改每页显示的属性数量。为此,我将“pageSize”变量设置为0,该变量根据查询字符串而变化。
问题是,分页停止工作。当我转到第二页时,它显示与第一页相同的结果?
这是查询字符串代码:
//Set page size
if (Request.QueryString["pagesize"].AsInt() == 2)
{
pageSize = 2;
}
else
{
pageSize = 4;
}
任何想法的人?
答案 0 :(得分:1)
我已经使用SQL Server 2012 Express数据库进行了以下小改动测试了您的代码:
@{
var pageSize = Request.QueryString["pagesize"].AsInt() == 2 ? 2 : 4;
var totalPages = 0;
var count = 0;
var page = UrlData[0].IsInt() ? UrlData[0].AsInt() : 1;
var offset = (page -1) * pageSize;
var db = Database.Open("yourDb");
var selectQueryString = "SELECT * FROM Property_Info";
count = db.Query(selectQueryString).Count();
totalPages = count/pageSize;
if(count % pageSize > 0){
totalPages += 1;
}
selectQueryString += " OFFSET @0 ROWS FETCH NEXT @1 ROWS ONLY";
var queryResult = db.Query(selectQueryString, offset, pageSize);
}
<!DOCTYPE html>
<html>
<body>
<p>Page @page of @totalPages</p>
@foreach(var row in queryResult){
// here your activities on rows ....
}
@{
for (var i = 1; i < totalPages + 1; i++){
<a href="/search/@i@(Request.QueryString.ToString().Length == 0 ?
null : "?" + Request.QueryString)">@i</a>
}
}
</body>
</html>
一切正常,但我从你的链接中看到真正的代码要复杂得多 尝试从这个工作示例开始,逐步添加其他代码。