我无法通过 SOAP 对列表进行分页。
我可以检索一个列表,但它只返回前 30 个项目。(这是默认视图中的设置)。
$methodName = 'GetListItems';
$listName = '{259134c5-fa87-441e-8c31-641b51193710}';
$camlQuery="";
$paging = urlencode('Paged=TRUE&p_ID=30');
$xmlAction =
'<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>' . $listName . '</listName>
<query>' . $camlQuery . '</query>
<queryOptions>
<QueryOptions>
<Paging ListItemCollectionPositionNext="' . $paging . '" />
</QueryOptions>
</queryOptions>
</GetListItems>';
echo '<hr><h1>My Action is:</h1><pre>' . htmlentities($xmlAction) . '</pre>';
$client = new Nusoap_Client($wsdl,true);
$response = $client->call($methodName,$xmlAction);
echo '<hr><h1>Response:</h1><pre>' . htmlentities(print_r($response,true)) . '</pre>';
这将返回这样的响应,除了有 30 个项目。
Response:
Array
(
[GetListItemsResult] => Array
(
[listitems] => Array
(
[data] => Array
(
[row] => Array
(
[0] => Array
(
[!ows_Region] => 7
[!ows_District_x0020_ID] => 1902
[!ows_District] => SOME ISD
[!ows_Campus_x0020_ID] => 1902001
[!ows_Campus] => MY H S
[!ows_Grade_x0020_Range] => 09-12
[!ows_FileRef] => 30;#sites/ti/Lists/Schools/30_.000
[!ows_MetaInfo] => 30;#
)
)
[!ItemCount] => 30
[!ListItemCollectionPositionNext] => Paged=TRUE&p_ID=30
)
)
)
)
文档说要获取下一页,我需要提供“ListItemCollectionPositionNext”中返回的值并再次查询。这就是上面所做的,它返回相同的 30 条记录。此列表中有 26K 项。
它不是权限问题。我是这个列表的管理员,可以通过 sharepoint web gui 操作它。
我还想念什么人?