如何使用getListItems调用sharepoint跳转到任意结果页面?

时间:2010-06-18 15:44:49

标签: web-services sharepoint caml

我正在使用AJAX向Sharepoint发送Web服务调用以检索列表项。

我得到了结果的第一页:

    "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
        <soapenv:Body> \
             <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                <listName>ListName</listName> \
                <rowLimit>10</rowLimit> \
                <query> \
                    <Query> \
                        <Where> \
                            <IsNotNull> \
                                <FieldRef Name='Title'/> \
                            </IsNotNull> \
                        </Where> \
                        <OrderBy> \
                           <FieldRef Name='Title' Ascending='True' /> \
                        </OrderBy> \
                    </Query> \
                </query> \
                <queryOptions><QueryOptions/></queryOptions> \
            </GetListItems> \
        </soapenv:Body> \
    </soapenv:Envelope>"

然后,我可以使用结果中的书签转到下一页:

    "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
        <soapenv:Body> \
             <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                <listName>ListName</listName> \
                <rowLimit>10</rowLimit> \
                <query> \
                    <Query> \
                        <Where> \
                            <IsNotNull> \
                                <FieldRef Name='Title'/> \
                            </IsNotNull> \
                        </Where> \
                        <OrderBy> \
                           <FieldRef Name='Title' Ascending='True' /> \
                        </OrderBy> \
                    </Query> \
                </query> \
                <queryOptions><QueryOptions> \
                    <Paging ListItemCollectionPositionNext='" + bookmark + "'" + " /> \
                </QueryOptions></queryOptions> \
            </GetListItems> \
        </soapenv:Body> \
    </soapenv:Envelope>"

其中书签是“Paged = TRUE&amp; p_Title = BlahBlah; p_ID = 5”

但是我想跳到第30页或最后一页,所以很明显我没有适当的p_Title值。我尝试使用各种数字添加PageFirstRow变量,但它不会更改结果。如果我省略了p_Title,我只是再次获得第一页。更改p_ID什么都不做。

有什么想法吗?

谢谢, 乔尔

1 个答案:

答案 0 :(得分:1)

documentation表明这是不可能的。

  

此方法返回的XML数据   包括一个   ListItemCollectionPositionNext   rs:Data元素内的属性   包含信息   支持分页。这个字符串包含   排序和字段中的字段数据   用于分页所需的其他项目。您   应该考虑这个字符串内部   不得修改;修改它   会产生意想不到的结果。

很遗憾,但我猜这个属性的名称对于它的功能是准确的。