2009-06-16 6 views
2

Je n'arrive pas à déterminer comment ajouter un type de colonne personnalisé à une liste avec le modèle objet.sharepoint - ajout d'une colonne personnalisée à la liste via le modèle objet

SPFieldCollection.Add() possède un paramètre SPFieldType, mais doit être l'une des valeurs énumérées dans l'énumération Microsoft.SharePoint.SPFieldType. Il ne peut donc pas être utilisé pour créer des colonnes d'un type personnalisé. J'ai ensuite essayé d'utiliser SPFieldCollection.CreateNewField() mais lorsque j'appelle SPField.Update() sur la valeur retournée, j'obtiens une exception: "ArgumentException was unfulled.La valeur ne se situe pas dans la plage attendue.".

Je vois une référence à SPFieldCollection.AddFieldAsXml() ici: How do I add custom column to existing WSS list template mais il n'y a pratiquement aucune information et je ne suis pas sûr que ce soit la bonne voie à suivre. MISE À JOUR: J'ai trouvé un post sur AddFieldAsXml: http://weblogs.asp.net/bsimser/archive/2005/07/21/420147.aspx et il s'avère que c'est très facile et a bien fonctionné pour moi. Poster de toute façon dans l'espoir que cela aidera quelqu'un d'autre. SPFieldCollection.AddFieldAsXml() est le chemin à parcourir pour autant que je sache.

+0

Vous devriez probablement déplacer la solution que vous avez trouvée dans une réponse. –

Répondre

1
Try with: 

SPField newField = null; 
newField= web.Fields.CreateNewField("MyFieldTypeName", fieldName); 
web.Fields.Add(newField); 

newField = web.Fields[fieldName]; 

// set some properties 
newField.ShowInDisplayForm = false; 
newField.ShowInViewForms = true; 
newField.Update(); 
Questions connexes