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

当一个项目中有多人时,Sharepoint警报不起作用,sharepoint,Sharepoint,我们使用Sharepoint Services 3.0作为项目跟踪工具。我们设置了一个列表,其中包含您的基本信息(描述等),另外我们还有一个“指定人员”列,其类型为人员或组,我们使用该列将列表项与个人关联。此列支持多项选择 我们希望设置警报,使每个人仅在分配给列表项时才能收到警报电子邮件。我们采取的方法是在此列表上设置一个视图,该视图经过过滤以显示指定人员等于[Me]的列表项目,然后在此列表上创建一个警报,该警报设置为在有人更改视图中显示的项目时发送电子邮件 当“指定人员”列中只有一个人时,此操

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

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

当“指定人员”列中只有一个人时,此操作效果良好。当“已分配人员”列中有多人时,此选项不起作用


有人知道为什么这样不行,或者我能做些什么来排除故障吗?有没有更好的方法来实现最终结果?我们可以创建多个“指定人员”列,不允许多个选择,但这似乎有点困难。

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

不要使用
等于
的列表过滤器,而是使用列表过滤器
包含
。这应该能奏效

根据评论进行编辑

要访问对象模型,需要使用VisualStudio。我不知道有什么方法可以使用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();
    }
}
使用(SPSite=newspsite(“yourwebsiteurlhere”))
{
使用(SPWeb=site.OpenWeb())
{
SPList list=web.Lists[“titleoflist”];
SPView视图=列表视图[“filteredviewname”];
view.Query=“”;
view.Update();
}
}
将“yourwebsiteurlhere”替换为网站url,“titleoflist”替换为相关列表的标题,“filteredviewname”替换为视图的名称,“assignfield”替换为用于分配字段的内部名称。如果是通过标准SharePoint UI创建的,则该字段的名称应不带空格

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

如果您不能/不允许使用Visual Studio,那么您的解决方案可能必须寻找第三方解决方案。

请尝试此信息网站,
它有一个很好的警报故障排除指南。

感谢您的回复。但是,sharepoint告诉我,筛选器类型contains不能用于此类型的列。我想知道我是否需要一个第三方组件(比如)你是对的。但是,如果您有权访问对象模型并可以直接编辑SPView,则应该能够使用CAML查询来实现这一点,而不是使用第三方组件。如果您需要我构造一个示例代码段,请告诉我,我将编辑我的帖子@csm8118请提供一个示例代码段。我想我应该拥有完全的编辑权限,但我以前从未尝试过。我是否需要在sharepoint designer或其他程序中执行此操作?