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>

ASP.. NET WebMatrix SQL数据库FETCH下一行按每次按钮单击

你的代码有一些错误。

我已将您的请求应用到以下的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>

我使用了一个隐藏字段来存储上次显示的行数,每次测试要显示的行数是否大于总行数。

相关文章: