Как выборочно запретить удаление задач в SharePoint 2010? - PullRequest
0 голосов
/ 23 марта 2012

Я новичок в SharePoint, извините, если ответ на мой вопрос очевиден.

Я хочу запретить удаление некоторых задач для пользователей.Я могу использовать приемник событий для своих целей:

public override void ItemDeleting(SPItemEventProperties properties)
{  
    if (...) 
    {
        properties.ErrorMessage = "The task can not be deleted";
        properties.Cancel = true;
    }
} 

Но я не могу передать данные для проверки, могу ли я удалить задачу.Я пытался использовать

properties.ListItem.Properties["ForbidDeleting"].ToString().Equals("true")

в состоянии получателя, но есть ли возможность передать такое свойство в методе вызова CreateTask?Я пытался использовать ExtendedProperties для этого, но этот подход не работает.

 ....
 task.ExtendedProperties["ForbidDeleting"] = "true"

Я могу создать свой класс для хранения Guids задачи и его свойства ForbidDeleting, но я думаю, что это не решение, а обход.

Не могли бы вы помочь мне, пожалуйста?Как я могу установить некоторые свойства задачи (в методе вызова CreateTask) и получить его в приемнике событий.Есть ли какой-нибудь способ сделать это?

Заранее спасибо.

PS: Извините за мои письма.Английский не мой родной язык.

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Я нашел решение. Я должен использовать такой код в Event Receiver для получения расширенных свойств:

Hashtable extendedProperties = SPWorkflowTask.GetExtendedPropertiesAsHashtable(taskItem);
var value = extendedProperties[key].ToString();

Спасибо Александру: https://sharepoint.stackexchange.com/questions/32341/how-to-selectively-forbid-deleting-of-tasks-in-sharepoint-2010

0 голосов
/ 24 марта 2012

Вы можете переопределить другой метод в получателе событий: ItemAdding .Вы бы задали поле, которое вы могли бы использовать позже в условии удаления:

public override void ItemAdding(SPItemEventProperties properties)
{
    // Decide if this task should be deletable.
    properties.AfterProperties["ForbidDeleting"] = true;
}

Вы должны убедиться, что в списке задач существует логическое поле ForbidDeleting ;либо с помощью шаблона для его создания, либо с помощью приемника событий списка, чтобы сделать то же самое, либо с помощью его вручную перед добавлением первой задачи.

Если вы хотите установить ForbidDeleting Отметьте сначала после того, как задача (элемент списка) действительно (успешно) создана, вы можете переопределить ItemAdded , но затем явно изменить элемент списка после изменения.

--- Ferda

...