J'ai la méthode d'assistance suivante qui renvoie la valeur d'un champ.ArgumentExecption inattendue lors de l'accès à une valeur de champ dans un élément SPListItem
public static string GetValueFrom(SPListItem item, string fieldName)
{
string value = string.Empty;
if (item.Fields.ContainsField(fieldName))
{
SPField field = item.Fields.GetField(fieldName);
if (item[field.InternalName] != null)
{
value = item[field.InternalName].ToString();
}
}
return value;
}
Cependant, pour un champ (normal champ Choix) Je reçois un ArgumentExecption sur cette ligne
if (item[field.InternalName] != null)
J'utilise
SPListItem item = list.GetItemById(itemId);
Pour obtenir l'article.
Je n'arrive pas à trouver pourquoi je reçois l'exception lorsque je vérifie si le champ existe? Toutes les idées pour lesquelles je reçois cette exception pour un seul champ.
Mise à jour.
Lors du débogage
L'appel à GetField() retourne l'objet de champ correct. Field.InternalName contient le nom interne correct du champ Si j'essaie d'accéder à la valeur à l'aide de l'élément ["nom interne du champ"], il lance toujours et exception pour seulement ce champ.
Très curieux. Je suis spitballing, mais quelques autres choses à essayer. 1) Et si vous essayiez d'accéder au terrain par son guid? ex: 'item [field.Id]'. 2) Et si vous parcouriez tous les champs de 'item' par index? ex 'item [0]', ''item [1]' ... juste pour voir ce qui est facilement disponible? – CBono
Je n'avais pas pensé à essayer l'approche Guid, je vais lui donner un test et poster le feed back, Merci –
pas de chance sur l'approche Guid, recréé la liste à partir de zéro et il a résolu le problème. –