Jquery在加载时加载所有记录

时间:2014-02-27 00:03:44

标签: jquery odata loading pageload

目前我有一个场景,我必须在滚动条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() {
                }
            });
        }
    }

2 个答案:

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