1

谁能告诉我如何仅在 MOSS中发布某种内容类型的页面时触发警报?

要求是在发布站点的页面库中设置警报,以便在有人使用特定内容类型创建页面并发布页面时发送通知。我已经成功触发了使用内容类型创建的页面的警报。SPAlert.Filter并且在使用属性中的 CAML 发布页面时单独进行。

但是,当我使用 CAML<And></And>警报组合查询时,会停止触发任何通知。

有谁知道为什么会这样?以及在中使用 CAML 的正确<And>方法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);

在此先感谢,日子。

4

2 回答 2

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。

于 2011-02-08T16:30:15.713 回答
0

实际上,SPAlert.Filter 属性不应该有<Where>XML 元素。从过滤器 XML 片段中删除它,你应该让它工作。

检查此页面上的第二个注释框:http: //msdn.microsoft.com/en-us/library/bb802961 (v=office.12).aspx

于 2011-12-22T15:49:16.600 回答