2012-04-04

SharePoint - Value does not fall within the expected range.

Une petite erreur agaçante... Vous avez développé un bout de code qui récupère la valeur d'un champ d'une liste SharePoint.
Bien entendu, le code est sécurisé par la vérification de la présence du champ pour afficher un beau message au responsable du paramétrage :
if (currentListItem.Fields.ContainField(seekedFieldName)) ...

Seulement voilà, tout semble bien se passer, le champ est trouvé mais dès la récupération de la valeur :
currentListItem[seekedFieldName]
ArgumentException : Value does not fall within the expected range.

On peut même chercher à récupérer l'ID du champ, on l'obtient correctement et sans souci mais :
currentListItem[seekedFieldId]
ArgumentException : Value does not fall within the expected range.

Si vous filtrez la récupération de vos SPListItems par une SPView, ne cherchez pas plus loin : SPListItem.Fields.Contains se base sur la SPList, de même que la récupération de l'ID. En revanche, la récupération de la valeur se fait sur ce qui est retourné par la SPView. Ajoutez le champ à la vue de filtrage... Et hop !