SPAlert.Filter不起作用

最大限度

有人可以在Sharepoint 2013上使用SPAlert筛选器提供帮助吗?

如果我在SPAlert实例上设置了Filter属性,则警报尚未发送

SPAlert newAlert = user.Alerts.Add();

SPAlertTemplateCollection alertTemplates = new SPAlertTemplateCollection(
(SPWebService)(SPContext.Current.Site.WebApplication.Parent));

newAlert.AlertType = SPAlertType.List;
newAlert.List = list;
newAlert.Title = alertTitle;
newAlert.DeliveryChannels = SPAlertDeliveryChannels.Email;
newAlert.EventType = eventType;
newAlert.AlertFrequency = SPAlertFrequency.Immediate;
newAlert.AlertTemplate = alertTemplates[Constants.AlertTemplates.GenericListCustom];                            

var wsm = new WorkflowServicesManager(web);
var wss = wsm.GetWorkflowSubscriptionService();
var subscriptions = wss.EnumerateSubscriptionsByList(list.ID);
bool assotiationExist = false;
var guid = Constants.Workflows.ApprovalWF.Guid;
foreach (var subs in subscriptions)
{
    assotiationExist = subs.DefinitionId == guid;
        if (assotiationExist)
        {
               newAlert.Filter = "<Query><Eq><FieldRef Name=\"ApprovalStatus\"/><Value type=\"string\">Approved</Value></Eq></Query>";
        }
}                               

newAlert.Update(false);
最大限度

问题出在newAlert.EventType = eventType行中。eventType是SPEventType.Add。这是在工作流将ApprovalStatus字段设置为“已批准”之后不发送警报的原因。

我修改了算法。现在eventType是SPEventType.Modify,我在列表中添加了新字段“ IsNewAlertSent”。事件首次触发时,我发送电子邮件并设置“ IsNewAlertSent”字段

最终代码如下所示。

类UserAlertManager:

..
newAlert.EventType = (eventType == SPEventType.Add? SPEventType.Modify: eventType);
newAlert.AlertFrequency = SPAlertFrequency.Immediate;
newAlert.AlertTemplate = alertTemplates[Constants.AlertTemplates.GenericListCustom];
..
           if (assotiationExist)
           {
              newAlert.Filter = "<Query><Eq><FieldRef name=\"ApprovalStatus\"/><Value type=\"Text\">Approved</Value></Eq></Query>";
              newAlert.Properties.Add("grcustomalert", "1"); 

            }
..
newAlert.Update(false);

GRCustomAlertHandler类别:

...
string subject = string.Empty;
string body = string.Empty;
bool grCustomAlert = Utils.IsSPAlertCustom(ahp.a);
if (ahp.eventData[0].eventType == (int)SPEventType.Modify && grCustomAlert)
{
             SPListItem item = list.GetItemById(ahp.eventData[0].itemId);
             var isNewAlertSentField = item.Fields.GetFieldByInternalName(Constants.Fields.IsNewAlertSent);
             if (isNewAlertSentField != null && (item[Constants.Fields.IsNewAlertSent] == null || !(bool)item[Constants.Fields.IsNewAlertSent]))
             {
                       ...                           
                        Utils.SendMail(web, new List<string> { ahp.headers["to"].ToString() }, subject, body);
                               item[Constants.Fields.IsNewAlertSent] = true;
                                using (new DisabledItemEventScope())
                                {
                                    item.SystemUpdate(false);
                                }
                }
}

...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hibernate @Filter在JPA中不起作用?

来自分类Dev

AngularJS $ filter在指令中不起作用

来自分类Dev

$或$内的$和$ filter条件不起作用

来自分类Dev

Underscore.js`filter`不起作用

来自分类Dev

javascript .filter() 数组不起作用

来自分类Dev

ffmpeg complex_filter淡出不起作用

来自分类Dev

Django的get / filter方法默认精确查找不起作用

来自分类Dev

“ -webkit-filter”在Firefox 41.0.2中不起作用

来自分类Dev

angularJS + UI引导提前输入:filter:$ viewValue不起作用

来自分类Dev

filter()集合在子查询中不起作用

来自分类Dev

Microsoft Graph API odata $ filter查询似乎不起作用

来自分类Dev

List.filter函数在SML / NJ中不起作用

来自分类Dev

javascript array.filter()的功能不起作用

来自分类Dev

Concat $filter 在 Odata 查询中不起作用

来自分类Dev

dplyr:filter_ 字符条件不起作用

来自分类Dev

XCTAssertEqualWithAccuracy不起作用

来自分类Dev

setBackgroundColor不起作用

来自分类Dev

showViewController不起作用

来自分类Dev

SAPbobsCOM不起作用

来自分类Dev

OnSelectedIndexChanged不起作用

来自分类Dev

FileFilter不起作用

来自分类Dev

RemoveOutputCacheItem不起作用

来自分类Dev

load()不起作用

来自分类Dev

getElementByTagName()不起作用?

来自分类Dev

Futuretask不起作用

来自分类Dev

别名不起作用

来自分类Dev

POST不起作用

来自分类Dev

ExpandableListView不起作用

来自分类Dev

ngClass不起作用?