Как перейти на произвольную страницу результатов с помощью вызова GetListItems на sharepoint? - PullRequest
2 голосов
/ 18 июня 2010

Я использую AJAX для отправки вызова веб-службы на Sharepoint для получения элементов списка.

Я получаю первую страницу результатов с:

    "<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 & p_Title = BlahBlah; p_ID = 5"

Но я хочу перейти, скажемстраница 30 или последняя страница, так что у меня нет подходящего значения для p_Title.Я пытался добавить переменную PageFirstRow с различными номерами, но это не меняет результат.Если я опущу p_Title, я просто получу первую страницу снова.Изменение p_ID ничего не дает.

Есть идеи?

Спасибо, Джоэл

1 Ответ

1 голос
/ 21 июня 2010

Документация предполагает, что это невозможно.

Данные XML, возвращаемые этим методом, содержат атрибут ListItemCollectionPositionNext внутри элемента rs: Data, который содержит информацию для поддержкипейджинг.Эта строка содержит данные для полей в сортировке и для других элементов, необходимых для подкачки.Вы должны считать эту строку внутренней и не подлежащей изменению;его изменение может привести к неожиданным результатам.

Очень печально, но я думаю, что имя атрибута точно соответствует его функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...