2009-07-09 7 views
0

J'ai défini un type de modèle de liste personnalisée pour SharePoint. Je l'installe en utilisant VSeWSS 1.3 et tout semble se comporter correctement.Problème lors de l'ajout d'un champ à un type de liste personnalisé dans SharePoint

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

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 est SPList le type de liste de base (liste intégrée personnalisée).

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

Mise à jour: Je devrais également mentionner que les champs sont effectivement créés dans certains cas même si l'appel lève une exception!

Répondre

1

s'avère que cela a été causé parce appelant thisList.SchemaXML mettre l'objet SPList dans un état que je ne pouvais pas récupérer! Obtention d'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!

0

Quel est le type de champ que vous essayez d'ajouter? est-ce un champ interne ou un type de champ personnalisé, que renvoie cette fonction Format2SPFieldType? Si elle est un champ Inbuilt pouvez-vous essayer d'ajouter avec le

thisList.Fields.Add("DisplayName", SPFieldType.Integer, false); 
+0

J'essaie d'ajouter des types réguliers comme celui que vous mentionnez ci-dessus. La fonction Format2SPFieldType renvoie et SPFieldType (il s'agit d'une instruction switch qui mappe une chaîne de format à un SPFieldType). Jusqu'à présent, j'ai essayé SPFieldType.Text et SPFieldType.Boolean. –

Questions connexes