2010-04-15 20 views
0

我们使用Sharepoint Services 3.0作为项目跟踪工具。我们有一个包含您的基本信息(描述等)的列表,另外我们还有一个“分配人员”列,该列是Person或Group类型,用于将列表项与个人关联。此列支持多种选择。当有多个人在一个项目中时,Sharepoint警报不起作用

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

当指定人员列中只有一个人时,此功能很好。当分配人员列中有多个人员时,该功能不起作用。

有人知道为什么这不起作用,或者我能做些什么来排除故障?有没有更好的方法来达到最终结果?我们可以创建几个“分配人员”列,但不允许多个选择,但这看起来有点笨拙。

回答

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用户界面创建的,则应该是没有空格的字段名称。

至于在哪里运行代码,您可以将这种事情放在一次性工作流程中。我有时只是为了确保我有必要的特权。希望这可以帮助!

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

+0

感谢您的回复。但是,sharepoint告诉我,包含的过滤器类型不能用于此类型的列。我想知道我是否需要第三方组件(如http://www.software112.com/products/sharepoint-people-contains-filter-webpart.html) – csm8118 2010-04-15 19:13:57

+0

你是对的。但是,如果您有权访问对象模型并可以直接编辑SPView,而不是第三方组件,则应该可以使用CAML查询来实现此目的。如果你需要我构建一个示例代码片段,请告诉我,我将编辑我的帖子,@ csm8118 – 2010-04-15 19:18:32

+0

请提供示例代码片段。我认为我应该有充分的权利来编辑,但我没有尝试过。我需要在共享点设计者还是其他方面做到这一点? – csm8118 2010-04-15 19:23:55

相关问题