目前我有一个场景,我必须在滚动条scrolllevent上加载记录。 我有一个空的下拉列表,在第一次加载时,我追加从服务器检索的前20条记录。 在下拉列表中,我将从服务器获取下一条20条记录并附加到下拉列表。 我正在滚动条事件上重复此过程,并将下一个20和接下来的20条记录附加到下拉列表。
以下是我的代码/算法。
我的问题是:我们是否有选择一次加载所有记录而不是从服务器加载20?
缺点:我的odata一次只返回20条记录。它的页面大小设置为20.我无法控制odata更新。我必须循环场景,每次20到20,并且在页面加载时,它应该总结在一起。
var nextCitiesLink = null;
var pgLoading = false;
$("#SelectedNames").bind('scroll', function(e) {
loadCityNames();
});
function loadCityNames() {
if (!pgLoading && nextLinkPgs != null) {
pgLoading = true;
$.ajax({
type: "GET",
url: nextCitiesLink,
crossDomain: true,
cache: false,
contentType: 'application/json; charset=utf-8',
xhrFields: {
withCredentials: true
},
success: function (result) {
debugger;
var namesDrpdown = $('#SelectedNames');
$.each(result.value, function(val, data) {
namesDrpdown.append($('<option></option>').val(data.Id).html(data.Name));
});
nextCitiesLink= "odatalink&$skip=20";
pgLoading = false;
},
complete: function() {
}
});
}
}
答案 0 :(得分:1)
您可以提出多个请求来获取填充页面所需的页数。
更好的想法是询问谁可以更新OData服务以增加页面大小。允许客户在一次通话中请求所有内容是个坏主意。
答案 1 :(得分:0)
OData目前不支持从客户端覆盖分页。没有查询选项或首选项标题支持。
但是,如果OData服务是由您构建的。您可以配置服务器以禁用服务器驱动的分页。
对于使用ASP.NET Web API OData构建的OData服务,请参考此修改它: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options#server-paging
对于使用WCF Data Services Server构建的服务,您可以参考此页面: http://msdn.microsoft.com/en-us/library/ee473424(v=vs.110).aspx