ASP.NET WebMatrix SQL数据库FETCH NEXT ROWS每次按钮点击?

时间:2014-08-01 15:47:12

标签: c# sql asp.net razor webmatrix

我是初学者,这是我第一次使用数据库。每次按一下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>

1 个答案:

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

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