Question

J'ai défini un type de modèle de liste personnalisée pour SharePoint . Je l'installe à l'aide VSeWSS 1.3 et tout semble se comporter correctement.

J'ai ajouté une action personnalisée qui ajouter des colonnes supplémentaires (SPFields) à la liste . Cependant, chaque fois que le code exécute et lance ArgumentException avec Valeur non dans la plage attendue. message d'erreur. Ce comportement semble être spécifique à des types personnalisés comme suggéré dans ce billet de blog .

Voici le code correspondant (thisList est une instance de mon type de modèle de liste personnalisée créée en utilisant l'interace du navigateur) qui tente d'ajouter un champ à l'SPFieldCollection de thisList:

                SPFieldType fieldType = Format2SPFieldType(format);
                SPField field = new SPField(thisList.Fields, fieldType.ToString(), fieldName);
                thisList.Fields.Add(field);

La dernière instruction (thisList.Fields.Add (champ)) renvoie l'exception suivante:

   Message  "Value does not fall within the expected range."

   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName, Boolean bThrowException)
   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXmlInternal(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXml(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.Add(SPField field)

Ce même code exécute très bien si l'élément SPList est le type de liste de base (liste personnalisée intégrée).

Y a-t-il des champs qui doivent être explicitement CAML et en utilisant la méthode AddFieldAsXml () directement pour faire ce travail de code avec les types de modèle de liste personnalisé?

Mise à jour: Je dois aussi mentionner que les champs sont effectivement créés dans certains cas, même si l'appel renvoie une exception

Était-ce utile?

La solution

Transforme que cela a été causé parce que l'appel thisList.SchemaXML mettre l'objet SPList dans un état que je ne pouvais pas récupérer! Obtenir une nouvelle référence à la même liste SharePoint, par exemple, SPList newList = thisList.ParentWeb.Lists [thisList.ID] a résolu le problème!

Autres conseils

Quel est le type de champ que vous essayez d'ajouter? est qu'un champ interne ou d'un type de champ personnalisé, qu'est-ce que cette fonction Format2SPFieldType retour? S'il est un champ peut vous Inbuilt essayez d'ajouter le

thisList.Fields.Add("DisplayName", SPFieldType.Integer, false);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top