gpt4 book ai didi

sql - 无限滚动Sql语句获取下一条记录

转载 作者:行者123 更新时间:2023-12-03 23:31:51 25 4
gpt4 key购买 nike

我正在尝试使用 javascript 和以下 sql 语句(sql server 2008)在我的 .NET 网站中进行无限滚动。这个 sql 获取前 10 行,但是我的 javascript 导致每次用户滚动到页面底部时执行 sql,并且每次它拉相同的(前 10)条记录,但我希望它拉下 NEXT 10 条记录,每次用户滚动到底部时。每次用户滚动到页面底部时,如何使用此 sql 和 row_number 来获取 NEXT 10 行?

SELECT * FROM 
(SELECT ROW_NUMBER() OVER (ORDER BY DateTime) As RowNum,
* From Topic) As a
WHERE RowNum
BETWEEN 1 AND 10

这是javascript:
<script type="text/javascript">
$(document).ready(function () {

function lastPostFunc() {
$('#divPostsLoader').html('<img src="images/bigLoader.gif">');

//send a query to server side to present new content
$.ajax({
type: "POST",
url: "Default.aspx/Foo",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {

if (data != "") {
$('.divLoadData:last').after(data.d);
}
$('#divPostsLoader').empty();
}

})
};

//When scroll down, the scroller is at the bottom with the function below and fire the lastPostFunc function
$(window).scroll(function () {
if ($(window).scrollTop() == $(document).height() - $(window).height()) {
lastPostFunc();
}
});

});
</script>

我现在在存储过程中有上面的sql:
<System.Web.Services.WebMethod()>
Public Shared Function Foo() As String
Dim strConn As String = "Data Source="
Dim conn As New SqlConnection(strConn)
Dim Cmd As New SqlCommand("InfiniteScroll", conn)
Cmd.CommandType = CommandType.StoredProcedure
Dim DA As New SqlDataAdapter(Cmd)
Dim DS As New DataSet()
DA.Fill(DS, "RefologyForumTopic")
Dim getPostsText As New StringBuilder()
Dim dv As DataView = DS.Tables(0).DefaultView

For Each myDataRow As DataRowView In dv
getPostsText.AppendFormat("price: {0}</br>", myDataRow("Topic"))
getPostsText.AppendFormat("description: {0}</br></p>", myDataRow("UserID"))
Next

getPostsText.AppendFormat("<div style='height:15px;'></div>")
Return getPostsText.ToString()
End Function

最佳答案

通常,我们使用传递页面和/或结果计数器参数的存储过程来执行此操作。像这样的东西:

SELECT * 
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY DateTime) As RowNum, *
FROM Topic) As a
WHERE RowNum BETWEEN 1+(@recsPerPage)*(@page-1) AND @recsPerPage*(@page)

这是 SQL Fiddle .

- 编辑

这一切都未经测试,但应该能让你朝着正确的方向前进:

首先,在页面中添加一个隐藏页面来存储您当前的页码:
<input type=hidden id=hidPage name=hidPage value="1">

其次,在 ajax 调用中更新数据参数:
data: { Page: $("#hidPage").value() },

第三,更新您的网络方法以接受参数:
Public Shared Function Foo(page as string (or int -- would need to test for sure)) As String

然后更新您的 SQL 以传递参数。我不打算重写它,但使用此链接寻求帮助: http://msdn.microsoft.com/en-us/library/bbw6zyha(v=vs.71).aspx

最后,在您的 ajax 成功处理程序上重置您的 hidPage 变量。
var newPage = parseInt($("#hidPage").val());
$("#hidPage").val(newPage+1);

祝你好运。

关于sql - 无限滚动Sql语句获取下一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14507838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com