我是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调用方法中传递这样的propterty?我尝试使用ExtendedProperties,但这种方法不起作用。
....
task.ExtendedProperties["ForbidDeleting"] = "true"
我可以创建我的类以保持任务Guids和ForbidDeleting属性,但我认为它不是解决方案而是解决方法。
你能帮帮我吗?如何设置一些任务属性(在CreateTask调用方法中)并在事件接收器中获取它。有没有内置方法可以做到这一点?提前谢谢。
PS:对不起我的写作。英语不是我的母语。
答案 0 :(得分:0)
您可以在事件接收器中覆盖另一种方法:ItemAdding。您可以设置一个稍后可以在删除条件中使用的字段:
public override void ItemAdding(SPItemEventProperties properties)
{
// Decide if this task should be deletable.
properties.AfterProperties["ForbidDeleting"] = true;
}
您必须确保任务列表中存在布尔 ForbidDeleting 字段;要么通过使用模板来创建它,要么使用列表事件接收器来执行相同操作,或者在添加第一个任务之前手动执行此操作。
如果要在真正(成功)创建任务(列表项)后首先设置 ForbidDeleting 标志,则可以覆盖ItemAdded,但在更改后显式更新列表项
---费达
答案 1 :(得分:0)
我找到了解决方案。我必须在事件接收器中使用这样的代码来检索扩展属性:
Hashtable extendedProperties = SPWorkflowTask.GetExtendedPropertiesAsHashtable(taskItem);
var value = extendedProperties[key].ToString();