任何人都可以告诉我如何仅在MOSS中某个内容类型的页面发布时触发提醒?
要求是在发布网站的页面库中设置警报,以便在有人使用特定内容类型创建页面并发布页面时发送通知。我已设法触发使用内容类型创建的页面的警报。当使用SPAlert.Filter
属性中的CAML发布页面时单独使用。
但是当我使用CAML组合查询时<And></And>
警报会停止触发任何通知。
有谁知道为什么会这样?在<And>
中使用CAML SPAlert.Filter
的正确方法是什么?
我的代码:
SPUser user = SPContext.Current.Web.CurrentUser;
SPWeb web = SPContext.Current.Web;
SPAlert alert = user.Alerts.Add();
alert.Filter = "<Query><And><Eq><FieldRef Name='ContentType' /><Value Type='Text'>CUSTOM_PAGE_CONTENT_TYPE</Value></Eq><Eq><FieldRef Name='_ModerationStatus' /><Value Type='Integer'>0</Value></Eq></And></Query>";
alert.Title = "Alert Title";
alert.AlertType = SPAlertType.List;
alert.EventType = SPEventType.All;
alert.List = web.Lists["Pages"];
alert.AlertFrequency = SPAlertFrequency.Immediate;
alert.AlwaysNotify = true;
alert.Update(true);
先谢谢, Rizi。
答案 0 :(得分:1)
试试这个:
<Query>
<Where>
<And>
<Eq>
<FieldRef Name='ContentType' />
<Value Type='Text'>CUSTOM_PAGE_CONTENT_TYPE</Value>
</Eq>
<Eq>
<FieldRef Name='_ModerationStatus' />
<Value Type='ModStat'>Approved</Value>
</Eq>
</And>
</Where>
</Query>
在Query和And之间需要一个Where元素。另外,对ModerationStatus使用一种ModStat而不是Integer。
答案 1 :(得分:0)
实际上,SPAlert.Filter属性不应该包含<Where>
XML元素。从过滤器XML片段中删除它,你应该让它工作。
检查此页面上的第二个注释框: http://msdn.microsoft.com/en-us/library/bb802961(v=office.12).aspx