Удалить столбец из списка с помощью клиентской объектной модели
-
29-09-2020 - |
Вопрос
При разработке для SharePoint Online я программно создал список контактов в своем приложении.Теперь я хочу удалить некоторые столбцы, добавленные в список.Итак, у меня есть следующий код:
var lastName = list.Fields.GetByInternalNameOrTitle("Last Name");
if (lastName != null) {
lastName.DeleteObject();
}
. . .
clientContext.ExecuteQuery();
Но это не удаляет столбец.Фактически, когда он содержится в try {...} catch {...}
, я получаю следующее сообщение об исключении:
Операция недопустима из-за текущего состояния объекта.
Рассматривая различные объекты недвижимости на Field
объект, я вижу CanBeDeleted
собственность false
, поэтому я могу только предположить, что это является причиной приведенного выше сообщения.Но это свойство также доступно только для чтения, поэтому я не могу принудительно удалить его.
Итак, мой вопрос: как мне удалить эти столбцы?Когда я добавляю список контактов в свое приложение с помощью Visual Studio, я могу удалить эти столбцы с помощью инструментов, поэтому я хочу сделать то же самое в коде.
Любая помощь будет принята с благодарностью.
Решение
Вы не можете удалить поле со свойством CanBeDeleted, имеющим значение false, поскольку оно указывает, можно ли удалить поле или нет.
Другие советы
возможно, вы попробуете сделать это, установив поле, которое больше не будет доступно только для чтения.
В С#:
f.ReadOnlyField = false;
f.Update(true);
s.Lists[ListName].Update();
f.Delete();