Delete column from list using Client Object Model
-
29-09-2020 - |
Question
Developing for SharePoint Online, I've created a Contact List programmatically in my app. I now want to delete some of the columns that were added to the list. So I have the following code:
var lastName = list.Fields.GetByInternalNameOrTitle("Last Name");
if (lastName != null) {
lastName.DeleteObject();
}
. . .
clientContext.ExecuteQuery();
But this does not delete the column. In fact, when contained in a try {...} catch {...}
, I get the following exception message:
Operation is not valid due to the current state of the object.
Looking at the various properties on the Field
object, I can see the CanBeDeleted
property is false
, so I can only assume that this is the cause for the above message. But this property is also read-only, so I can't force it to be deleted.
So my question is, how would I go about deleting these columns? When I add a Contact List to my app using Visual Studio, I'm able to delete these columns through the tooling, so I want to do the same in code.
Any help would be greatly appreciated.
Solution
You cannot delete a field with CanBeDeleted property as false as it indicates whether the field can be deleted or not.
OTHER TIPS
maybe you try it with setting the field not to be readonly anymore
In C#:
f.ReadOnlyField = false;
f.Update(true);
s.Lists[ListName].Update();
f.Delete();