Razor Webmatrix-使用搜索结果更改可变螺钉
我有一个搜索页面,它可以返回我在多个页面上的搜索结果。这真的很有效。代码如下:Razor Webmatrix-使用搜索结果更改可变螺钉,razor,pagination,webmatrix,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
//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;
}
各位有什么想法吗?我已经测试了您的代码,并结合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>
@{
var pageSize=Request.QueryString[“pageSize”].AsInt()==2?2:4;
var totalPages=0;
var计数=0;
var page=UrlData[0]。IsInt()?UrlData[0]。AsInt():1;
变量偏移量=(第1页)*页面大小;
var db=Database.Open(“yourDb”);
var selectQueryString=“选择*来自属性信息”;
count=db.Query(selectQueryString.count();
totalPages=计数/页面大小;
如果(计数%pageSize>0){
总页数+=1;
}
选择QueryString+=“偏移量@0行仅取下@1行”;
var queryResult=db.Query(选择querystring、offset、pageSize);
}
第页@共页@totalPages
@foreach(queryResult中的var行){
//这是您的行上的活动。。。。
}
@{
对于(变量i=1;i
所有这些对我来说都很好,但我从您的链接中看到,真正的代码要复杂得多。试着从这个工作示例开始,逐步添加其他代码。只是一个想法,因为我使用的是SQL Express,所以fetch/offset是最好的方法吗?我刚刚读到,这主要用于SQL compact?
OFFSET
和FETCH
从2012版开始由SQL Express支持。太好了,谢谢您提供的信息。我还没有接近解决我的问题,但很高兴知道我没有完全使用错误的代码!你能把你的代码和它结合起来吗?i、 你把你的“查询字符串代码”放在哪里了?当然,我会上传完整的代码并发布链接。