sharepoint - add custom column to list via object model

Go To


I'm having trouble figuring out how to add a custom column type to a list with the object model.

SPFieldCollection.Add() has a parameter SPFieldType, but that must be one of the enumerated values in the Microsoft.SharePoint.SPFieldType enumeration, thus it cannot be used to create columns of a custom type.

I next attempted using SPFieldCollection.CreateNewField() but when I call SPField.Update() on the returned value I get an exception: "ArgumentException was unhandled. Value does not fall within the expected range.".

I see a reference to SPFieldCollection.AddFieldAsXml() here: How do I add custom column to existing WSS list template but there's hardly any info and I'm not sure that's the right track to take.

UPDATE: I found a post on AddFieldAsXml: and it turns out it's very easy and worked well for me. Posting anyway in hopes it will help someone else.

2009-06-16 13:58
by Chloraphil
You should probably move the solution you found into an answer - Alex Angas 2009-06-16 15:09


SPFieldCollection.AddFieldAsXml() is the way to go as far as I can tell. See here for an example:

2009-06-16 17:08
by Chloraphil


 Try with:

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

 newField = web.Fields[fieldName];

 // set some properties
 newField.ShowInDisplayForm = false;
 newField.ShowInViewForms = true;
2010-03-31 12:36
by Ciprian Grosu