当多个人在项目中时,Sharepoint警报不起作用

时间:2010-04-15 16:36:37

标签: sharepoint

我们使用Sharepoint Services 3.0作为项目跟踪工具。我们有一个列表设置,其中包含您的基本信息(描述等)以及我们有一个“指定人员”列,其类型为Person或Group,用于将列表项与个人关联。此列支持多种选择。

我们希望设置提醒,以便每个人只有在分配给列表项时才会收到提醒电子邮件。我们采取的方法是在此列表上设置一个视图,该视图被过滤以显示已分配人员等于[Me]的列表项目,然后在此列表上创建一个警报,该警报设置为在某人更改时发送电子邮件视图中显示的项目。

当分配的人员列中只有一个人时,这很有效。当分配的人员栏中有多个人时,它不起作用。

有人知道为什么这不起作用,或者我可以做些什么来排除故障?有没有更好的方法来达到最终结果?我们可以制作几个“指定人员”列,但不允许多次选择,但这看起来很糟糕。

2 个答案:

答案 0 :(得分:1)

试试此信息网站, http://www.sharepointalert.info 它有一个很好的警报故障射击指南。

答案 1 :(得分:0)

它适用于一个人但不适用于多人的原因是因为该支票专门针对个人。您的视图所做的比较是Assigned是否等于[Me],而不是Assigned将[Me]作为其实体之一。

使用列表过滤器is equal to,而不是使用contains的列表过滤器。这应该可以解决问题。

编辑回应评论

要访问对象模型,您需要使用Visual Studio。我不知道使用SharePoint Designer完成这种事情的方法,但也许你可以做一些疯狂的数据表视图。无论如何......根据你的实际需要......

以下代码示例说明了实现目标的一种非常基本的方法。

using (SPSite site = new SPSite("yourwebsiteurlhere")) 
{
    using (SPWeb web = site.OpenWeb())
    {
        SPList list = web.Lists["titleoflist"];
        SPView view = list.Views["filteredviewname"];
        view.Query = "<Where><Contains><FieldRef Name=\"assignfield\"/><Value Type=\"Integer\"><UserID Type=\"Integer\" /></Value></Contains></Where>";
        view.Update();
    }
}

将“yourwebsiteurlhere”替换为网站网址,将“titleoflist”替换为相关列表的标题,将“filteredviewname”替换为视图名称,将“assignfield”替换为您用于分配字段的内部名称。如果您是通过标准SharePoint UI创建的,则应该是没有任何空格的字段的名称。

至于运行代码的位置,您可以将此类内容放在一次性工作流程中。我有时这样做只是为了确保我有必要的特权。希望这有帮助!

如果您无法/允许使用Visual Studio,那么您的解决方案可能必须是查看第三方解决方案。