ASP.. NET WebMatrix SQL数据库FETCH下一行按每次按钮单击
本文关键字:一行 单击 按钮 SQL WebMatrix NET 数据库 FETCH ASP | 更新日期: 2023-09-27 18:15:55
我是一个初学者,这是我第一次使用数据库。我试图FETCH下一行从SQL数据库表每次按一下按钮。我创建一个按钮张贴,并试图增加行数3次,但它不工作吗?
正如你所看到的OFFSET值总是0,默认行数是3,当有人点击按钮时,我想每次增加3行。如果有人第一次点击按钮,那么我希望行数从3增加到6,第二次从6增加到9,以此类推。
我正试图用ASP来完成这个。. NET Razor Loops或类似的方法,每次使用Submit按钮更改和更新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>
你的代码有一些错误。
我已将您的请求应用到以下的Northwind样本数据库
@{
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>
我使用了一个隐藏字段来存储上次显示的行数,每次测试要显示的行数是否大于总行数。