Webmatrix - 用搜索结果更改可变螺丝

时间:2014-01-16 11:05:37

标签: razor pagination webmatrix

我有一个搜索页面,可以在多个页面上返回我的结果。这非常有效。这是代码:

//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;
}

任何想法的人?

1 个答案:

答案 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>

一切正常,但我从你的链接中看到真正的代码要复杂得多 尝试从这个工作示例开始,逐步添加其他代码。