J'ai le même code exécuté sur deux installations SharePoint différentes, pour parcourir les éléments d'une liste et afficher les données. Contre la première installation de SharePoint,Pourquoi ne puis-je pas accéder aux éléments d'une liste même si SPList.ItemCount est> 0?
SPList.ItemCount == SPList.Items.Count == 4
.
Contre la seconde installation de SharePoint, SPList.ItemCount == 4 alors que SPList.Items.Count == 0, et la boucle foreach passant par les éléments de la liste ne fonctionne pas (car il n'y a aucun élément). (Inutile de dire que les listes sur les deux installations SP ont les mêmes éléments).
Le code J'utilise peut se résumer ainsi:
...
SPList list = web.Lists["list"];
SPListItemCollection itemCollection = list.Items;
Console.WriteLine("list.ItemCount: {0}", list.ItemCount); //prints "list.ItemCount: 4"
Console.WriteLine("list.Items.Count: {0}", list.Items.Count); //prints "list.Items.Count: 0"
foreach (SPListItem item in itemCollection)
{
//nothing executed here, since itemCollection is empty,
//even though list.ItemCount is 4.
}
...
Quelle serait la cause de la SPList.ItemCount et la SPList.Items.Count être différent? Et, plus important encore, pourquoi ne puis-je pas parcourir les éléments de la liste, même lorsque SPList.ItemCount> 0?
Une copie de cette question apparaît sur SharePoint Overflow, mais elle n'explique pas complètement la solution.
Dans ce cas, ce n'était pas les autorisations au niveau de l'élément, mais les autorisations de la liste elle-même - je pensais avoir activé l'accès anonyme sur la liste, mais il s'avère que non. Votre réponse m'a mis dans la bonne direction, merci! Étrange que les propriétés Count et ItemCount renvoient des valeurs différentes. –
Content d'avoir aidé! Une chose que je viens d'apprendre récemment si vous rencontrez des problèmes de performance est que 'SPList.Items.GetItemById()' est beaucoup plus lent que 'SPList.GetItemById()'. Raison d'être qu'appeler la propriété 'Items' sur' SPList' * immédiatement * récupère tous les éléments de la liste, ce que vous ne voulez pas dans certains cas. –