我是初学者,这是我第一次使用数据库。每次按一下Button,我都会尝试从SQL数据库表中FETCH NEXT ROWS。我创建了一个按钮来发布并尝试每次增加3行,但是它没有工作?
正如您所看到的,OFFSET值始终为0且ROWS的默认数量为3,当有人单击按钮时,我希望每次增加3行。如果第一次有人点击按钮然后我希望行数从3增加到6,第二次增加6到9等等......
我尝试使用ASP.NET Razor Loops或类似的方法,每次都使用提交按钮更改和更新FETCH NEXT ROWS的值。
非常感谢任何帮助。谢谢你&这是我的代码:
.cshtml
@{
var i += 3;
var value = i + Request["submit"];
var db = Database.Open("WebSite");
var selectQueryString = "SELECT * FROM WebSite ORDER BY NAME OFFSET 0 ROWS FETCH NEXT ('3 + value.AsInt()') ROWS ONLY";
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table>
@foreach(var row in db.Query(selectQueryString))
{
<tr>
<td>@row.NAME</td>
<td><img alt="#" src="@row.URL"></td>
</tr>
}
</table>
<form action="" method="post">
<button type="submit" name="submit">Load More</button>
</form>
</body>
</html>
答案 0 :(得分:2)
您的代码中存在一些错误。
我已将您的请求应用于以下
中的罗斯文示例数据库@{
var rowsNumb = 3;
var db = Database.Open("Northwind");
if (IsPost){
rowsNumb = Request["lastRec"].AsInt() + 3;
}
var maxRecs = db.QueryValue("SELECT COUNT([Product Id]) FROM Products");
var sql = @"SELECT * FROM Products ORDER BY [Product Id]
OFFSET 0 ROWS FETCH NEXT @0 ROWS ONLY";
rowsNumb = (rowsNumb > maxRecs ? maxRecs : rowsNumb);
var result = db.Query(sql, rowsNumb);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<table>
@foreach(var row in result){
<tr>
<td>@row["Product Name"]</td>
<td>@row["English Name"]</td>
<td>@row["Unit Price"]</td>
</tr>
}
</table>
<form action="" method="post">
<input type="hidden" name="lastRec" value="@rowsNumb" />
<button type="submit">Load More</button>
</form>
</body>
</html>
我使用隐藏字段存储上次显示的行号,每次测试显示的行数是否大于行总数。