2010-08-11 29 views
1

我正在尝试为SharePoint创建一个替代Alert Me通知功能。SharePoint列表中的特定更改信息/ listitem

我已经完成了大部分的努力工作。我只需要知道在一个时间段内获得更改的最佳方式。

我知道SPChange类和list.GetChanges()方法。然而,我可以从这里得到的唯一信息就是“更新”/“重命名”等等。

我想要更具体的信息,比如创建/更新/删除的内容以及由谁等等。这应该通过SPAudit课程来完成吗?还是我缺少别的东西?

回答

1

我会建议检查我的问题在这里:How to create a daily summary alert for any change in a SharePoint site

我遵循马克的建议,使用SPAudit框架进行了一些调整。我最终在附加到列表中的事件接收器中添加了我自己的一些自定义SPAudit条目。然后,控制台应用程序每天晚上运行并读取当天的所有审计条目以发出警报。

这听起来像你可能只需要一个列表的警报,所以你将不得不做更多的过滤。另外请记住,如果您想知道的不仅仅是基本信息(例如:哪些字段已更改),那么您需要查看创建自己的SPAudit条目。

*编辑*

对于自定义的审核项目,我首先创建一个豆,这是序列化的。然后,你可以序列包含所有信息从您的事件接收器插入SPAudit项豆:

public static void AddEvent(MyCustomBeanClass e, SPSite site) 
{ 
    StringWriter sw = new StringWriter(); 
    XmlSerializer xs = new XmlSerializer(typeof(MyCustomBeanClass)); 
    xs.Serialize(sw, e); 
    site.Audit.WriteAuditEvent(SPAuditEventType.Custom, "MyCustomAuditing", sw.ToString()); 
} 

另外,我觉得this post of mine将帮助您可视化(1)中的条目是什么样子的开箱和(2)你需要做一些额外的处理(例如:确定是否创建了一个项目)。

+0

优秀信息。后续尽管 - 如果我真的想要的是列表中创建/更改项目的信息。我将如何获得有关该项目的细节。详细信息如姓名,元数据或更改内容,从什么到什么? 是否真的有必要创建我自己的事件接收器,并添加自定义SPAudit条目?如果是这样,你能指点我一些吗?或者解释这个过程的东西? - 谢谢:) – Dynde 2010-08-12 10:38:20

+0

如果你只想创建日期,用户和位置等基本信息,那么你将不需要事件接收器。然而,如果你想要更多,那么你肯定会需要一个事件接收器和自定义SPAudit条目。我编辑了我的答案,并提供了更多信息,希望能为您带来正确的方向。 – 2010-08-12 14:29:16