«Операция недействительна из-за текущего состояния объекта».когда я пытаюсь распечатать поле в списке - PullRequest
1 голос
/ 30 января 2012

У меня есть несколько полей в списке, который был создан с использованием схемы. Схема и список, кажется, вышли из синхронизации, поэтому, когда я пытаюсь изменить атрибуты для поля в схеме, эти изменения не отражаются в списке, если они не являются дополнениями (то есть новыми полями).

У меня есть несколько запечатанных полей, которые мне нужно распечатать. Но когда я пытаюсь установить Sealed = false, либо с помощью SharePoint Manager, либо с помощью написанной мной утилиты, я получаю сообщение об ошибке: «Операция недействительна из-за текущего состояния объекта». Я не могу найти больше полезной информации об ошибке.

На моей утилите это происходит в строке:

field.Sealed = false;

Я даже не пытался обновить поле до того, как возникнет исключение. field.SchemaXml тоже выглядит хорошо. Я не вижу в этом ничего плохого.

Это происходит в нескольких полях этого списка.

Кто-нибудь знает, что делать?

Ответы [ 2 ]

1 голос
/ 19 ноября 2012

Следуя ответу Рича, если вам нужно изменить столбец, который находится в коллекции SPBuiltInFieldId, вы можете установить GUID столбца на новый GUID () во время выполнения, а затем внести любые изменения в нужный вам столбец. Будьте осторожны, есть причина, по которой Microsoft пытается заблокировать вас для редактирования этих столбцов. Мне нужно было исправить отношение списка для столбца Ресурсы (Услуги) в моем групповом календаре, и это позволило мне сделать это.

1 голос
/ 30 января 2012

В чем ошибка и в каком поле происходит сбой?

Согласно MSDN , вы не можете изменить из коробки или поля внешних данных:

  • InvalidOperationException: сделана попытка присвоить значение типу поля, встроенному в SharePoint. Значение true / false таких полей должно оставаться на заводской настройке.
  • NotSupportedException: Предпринята попытка присвоить значение false, если поле SharePoint является столбцом внешних данных.

Обновление (для выделения информации, которая может быть скрыта в комментариях):

Вызвать SPBuiltInFieldId.Contains , чтобы избежать (или обнаружить) InvalidOperationException. Свойство Sealed нельзя установить, если SPBuiltInFieldId.Contains возвращает true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...