Обсуждение по категориям SharePoint - категория по умолчанию для родительской категории при ответе - PullRequest
0 голосов
/ 13 мая 2010

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

Проблема в том, что при ответе на обсуждение снова запрашивается категория.

Как я могу отделить функциональность ответа, чтобы Категория не запрашивалась, а Категория была установлена ​​для обсуждения, в котором он находится?

Я попытался редактировать копию NewForm.aspx в SharePoint Designer, но вы можете редактировать только то, какую веб-часть он использует, а не какие поля отображаются.

1 Ответ

2 голосов
/ 13 мая 2010

В дискуссионной доске SharePoint есть два отдельных типа контента: Обсуждение и Сообщение. Обсуждение - это папка, представляющая всю цепочку обсуждения, в то время как Сообщение предназначено для каждого элемента ответа в этой папке.

Чтобы сделать категорию доступной только для обсуждений, вместо простого добавления поля в список, добавьте его специально к типу содержимого обсуждения для этой доски и убедитесь, что оно не добавлено к типу содержимого сообщения (удалите его если это так).


Если вы хотите, чтобы поле «Категория» было во всех ответах и ​​имело то же значение, что и родительское обсуждение, к сожалению, вам придется немного хитрить и использовать некоторые обработчики событий. Если вы еще не знакомы с ними, прочитайте эту статью для базового примера. Вам нужно будет создать событие «ItemAdding» или «ItemAdded» и прикрепить его к доске обсуждений. Этот получатель события должен сначала проверить, является ли добавляемый элемент сообщением или обсуждением (item.ContentType.Name.Equals("Message")). Затем найдите родителя; идентификатор родителя сообщения хранится в поле с отображаемым именем «Идентификатор родительской папки». Получите значение категории для родителя, а затем установите значение категории сообщения, соответствующее этому. Последний шаг, чтобы поле «Категория» в типе содержимого сообщения не отображалось в форме редактирования, необходимо переключить свойство «ShowInEditForm» этого поля для этого типа содержимого на этой доске обсуждений на «false». Это можно сделать в объектной модели с помощью простого list.ContentTypes["Message"].Fields["Category"].ShowInEditForm = false;, где list - это экземпляр вашей доски обсуждений.

...