通过SOAP查询SharePoint列表只返回第一页视图

时间:2013-03-14 17:37:40

标签: jquery sharepoint soap caml

我正在尝试检索列表中的所有项目,但我只获得前50个项目(默认视图的第一页)。最后,我想将列表中的所有项目拉入一个数组,我可以对它进行排序和解析,以便在一系列格式化的XSLT中输出统计数据,但让我们先解决第一个障碍。

这是我的代码:

<script src="/sites/mySite/Resources/jquery-1.8.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    var soapEnv =
        "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
            <soapenv:Body> \
                     <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                        <listName>myList</listName> \
                        <viewFields> \
                            <ViewFields> \
                               <FieldRef Name='Team_x0020_Assigned' /> \
                           </ViewFields> \
                        </viewFields> \
                    </GetListItems> \
                </soapenv:Body> \
            </soapenv:Envelope>";

        $.ajax({
            url: "/sites/mySite/_vti_bin/lists.asmx",
            type: "POST",
            dataType: "xml",
            data: soapEnv,
            complete: processResult,
            contentType: "text/xml; charset=\"utf-8\""
        });
    });

    function processResult(xData, status) {
        $(xData.responseXML).find("z\\:row").each(function() {
            var liHtml = "<li>" + $(this).attr("ows_Team_x0020_Assigned") + "</li>";
            $("#tasksUL").append(liHtml);
        });
    }
</script>

1 个答案:

答案 0 :(得分:1)

视图上可能设置了rowLimit,您可以通过添加

来覆盖它
<rowLimit>1000</rowLimit>

到GetListItems参数。

请注意,虽然SharePoint 2010可以限制您的请求,但不会返回超过5000或20000(对于管理员)项目。可以在Central Admin的Web应用程序设置中更改这些设置。

顺便说一句,如果您还没有这样做,您可能需要考虑使用XSLT列表视图Web部件。