如何有选择地禁止删除SharePoint 2010中的任务?

如何有选择地禁止删除SharePoint 2010中的任务?,sharepoint,sharepoint-2010,properties,Sharepoint,Sharepoint 2010,Properties,我是SharePoint新手,若我的问题答案显而易见,那个么很抱歉 我想禁止删除用户的某些任务。 我可以将事件接收器用于我的目的: public override void ItemDeleting(SPItemEventProperties properties) { if (...) { properties.ErrorMessage = "The task can not be deleted"; properties.Cancel =

我是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"
我可以创建我的类来保留任务guid,并禁止删除属性,但我认为这不是一个解决方案,而是一种变通方法

你能帮我吗?如何设置一些任务属性(在CreateTask调用方法中)并在事件接收器中获取它。有什么内在的方法可以做到这一点吗

先谢谢你


PS:对不起,我写了。英语不是我的母语。

您可以覆盖事件接收器中的其他方法:。您可以设置一个字段,以便以后在删除条件中使用:

public override void ItemAdding(SPItemEventProperties properties)
{
    // Decide if this task should be deletable.
    properties.AfterProperties["ForbidDeleting"] = true;
}
您必须确保任务列表中存在删除字段;通过使用模板创建它,或者使用列表事件接收器执行相同的操作,或者在添加第一个任务之前手动执行

如果要在任务(列表项)真正(成功)创建后首先设置禁止删除标志,则可以覆盖,但在更改后显式更新列表项


---费达我找到了一个解决办法。我必须在事件接收器中使用如下代码来检索扩展属性:

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

感谢亚历山大:

谢谢你的回答。这是个好主意,但我已经找到了更好的解决方案。