我们使用Sharepoint Services 3.0作为项目跟踪工具。我们有一个列表设置,其中包含您的基本信息(描述等)以及我们有一个“指定人员”列,其类型为Person或Group,用于将列表项与个人关联。此列支持多种选择。
我们希望设置提醒,以便每个人只有在分配给列表项时才会收到提醒电子邮件。我们采取的方法是在此列表上设置一个视图,该视图被过滤以显示已分配人员等于[Me]的列表项目,然后在此列表上创建一个警报,该警报设置为在某人更改时发送电子邮件视图中显示的项目。
当分配的人员列中只有一个人时,这很有效。当分配的人员栏中有多个人时,它不起作用。
有人知道为什么这不起作用,或者我可以做些什么来排除故障?有没有更好的方法来达到最终结果?我们可以制作几个“指定人员”列,但不允许多次选择,但这看起来很糟糕。
答案 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,那么您的解决方案可能必须是查看第三方解决方案。