Viens de trouver ce alors que la recherche de la même chose, mais il semble que Sharepoint 2010 a quelque chose de construit dans pour cela, au moins pour le modèle de Serveur: list.Fields.ContainsField("fieldName");
Ne sais pas si elle existe pour le côté Client. Pensé que ce serait un bon endroit pour stocker cette information.
string siteUrl ="http://mysite";using(SPSite site =newSPSite(siteUrl)){using(SPWeb web = site.OpenWeb()){SPList list = web.Lists["my forum"];for(int i =0; i < list.Fields.Count; i++){if(list.Fields[i].Title=="xyz"){--}}}}
Modèle Objet Client
string siteUrl ="http://MyServer/sites/MySiteCollection";ClientContext clientContext =newClientContext(siteUrl);
SP.ListList= clientContext.Web.Lists.GetByTitle("my forum");for(int i =0; i < list.Fields.Count; i++){if(list.Fields[i].Title=="xyz"){--}}
C'est le modèle objet serveur dans votre exemple n'y a pas beaucoup de différence dans les deux codes, sauf le contexte client Ashutosh, merci pour votre réponse. +1 Ashutosh, vous pouvez supprimer beaucoup de code réutilisable ci-dessus à l'aide d'un opérateur lambda à la requête de la collection de champs. Que modèle objet client code ne fonctionne pas comme il est écrit que rien n'est chargé par le contexte.load() et le contexte.executequery() avant son utilisation.
J'ai fini par récupérer le détail de la liste des champs de la avant mon opération, et de les enregistrer dans une liste générique de structures (contenant les détails de chaque champ). J'ai ensuite cette requête (génériques) dans la liste pour voir si le champ existe réellement dans la donnée (SharePoint) de la liste.
//Retrieve detail sof all fields in specified listusing(ClientContext clientContext =newClientContext(SharePointSiteUrl)){List list = clientContext.Web.Lists.GetByTitle(listName);
_listFieldDetails =newList<SPFieldDetails>();//get fields name and their typesClientObjectPrototype allFields = list.Fields.RetrieveItems();
allFields.Retrieve(FieldPropertyNames.Title,FieldPropertyNames.InternalName,FieldPropertyNames.FieldTypeKind,FieldPropertyNames.Id,FieldPropertyNames.ReadOnlyField);
clientContext.ExecuteQuery();foreach(Field field in list.Fields){SPFieldDetails fieldDetails =newSPFieldDetails();
fieldDetails.Title= field.Title;
fieldDetails.InternalName= field.InternalName;
fieldDetails.Type= field.FieldTypeKind;
fieldDetails.ID = field.Id;
fieldDetails.ReadOnly= field.ReadOnlyField;
listFieldDetails.Add(fieldDetails);}}//Check if field name exists
_listFieldDetails.Exists(field => field.Title== fieldName);//Struct to hold details of the fieldpublicstructSPFieldDetails{publicstringTitle{get;set;}publicstringInternalName{get;set;}publicGuid ID {get;set;}publicFieldTypeType{get;set;}publicboolReadOnly{get;set;}}
Quelques bonnes réponses ci-dessus. Personnellement, j'ai utilisé celui-ci:
List list = ctx.Web.Lists.GetByTitle("Some list");FieldCollection fields = list.Fields;IEnumerable<Field> fieldsColl = ctx.LoadQuery(fields.Include(f => f.InternalName));
ctx.ExecuteQuery();bool fieldMissing = fieldsColl.Any(f => f.InternalName!="Internal_Name");
Vous pouvez également utiliser 'Où' après il y a la méthode et de vérifier si l'article est renvoyé de la collection/le champ est null. C'est à propos de la préférence personnelle, parce que les deux options sont interrogeant sur le côté client.
Viens de trouver ce alors que la recherche de la même chose, mais il semble que Sharepoint 2010 a quelque chose de construit dans pour cela, au moins pour le modèle de Serveur:
list.Fields.ContainsField("fieldName");
Ne sais pas si elle existe pour le côté Client. Pensé que ce serait un bon endroit pour stocker cette information.
OriginalL'auteur
Modèle Objet Serveur
Modèle Objet Client
n'y a pas beaucoup de différence dans les deux codes, sauf le contexte client
Ashutosh, merci pour votre réponse. +1
Ashutosh, vous pouvez supprimer beaucoup de code réutilisable ci-dessus à l'aide d'un opérateur lambda à la requête de la collection de champs.
Que modèle objet client code ne fonctionne pas comme il est écrit que rien n'est chargé par le contexte.load() et le contexte.executequery() avant son utilisation.
OriginalL'auteur Ashutosh Singh-MVP SharePoint
Voici un code d'extension (otite chronique) pour la liste sharepoint
utilisation
profiter 🙂
OriginalL'auteur Mitya Kours
La méthode suivante montre comment déterminer si une colonne spécifiée existe dans un
List
à l'aide de otite chronique:Utilisation
OriginalL'auteur Vadim Gremyachev
J'ai fini par récupérer le détail de la liste des champs de la avant mon opération, et de les enregistrer dans une liste générique de structures (contenant les détails de chaque champ). J'ai ensuite cette requête (génériques) dans la liste pour voir si le champ existe réellement dans la donnée (SharePoint) de la liste.
OriginalL'auteur MagicAndi
Quelques bonnes réponses ci-dessus. Personnellement, j'ai utilisé celui-ci:
Vous pouvez également utiliser 'Où' après il y a la méthode et de vérifier si l'article est renvoyé de la collection/le champ est null. C'est à propos de la préférence personnelle, parce que les deux options sont interrogeant sur le côté client.
OriginalL'auteur Diomos
Je préfère le SharePoint en Plus de la Bibliothèque comme il est vraiment propre:
http://aymkdn.github.io/SharepointPlus/symbols/%24SP%28%29.list.html
Vous pourriez utiliser une boucle for pour parcourir la ligne et de vérifier si la colonne que vous cherchez existe.
OriginalL'auteur Bhetzie
Un coupé et une version simplifiée de Mitya de la méthode d'extension:
Il n'y a pas besoin de passer dans un autre contexte client paramètre lorsque vous pouvez déjà utiliser le contexte qui vient dans la liste.
OriginalL'auteur Colin Gardner
à beaucoup de code à utiliser ce
charge Champs d'abord, puis
OriginalL'auteur David