Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 创建eventreceiver以记录用户在列表中所做的更改_Sharepoint - Fatal编程技术网

Sharepoint 创建eventreceiver以记录用户在列表中所做的更改

Sharepoint 创建eventreceiver以记录用户在列表中所做的更改,sharepoint,Sharepoint,我正在SharePoint发布网站上工作,希望在SharePoint列表中记录用户所做的所有更改 网上的一些搜索引导我找到了EventReceiver。 但我的EventReceiver必须是通用的,并附加到网站集中的所有列表中。日志列表有几个列,如事件发生的列表的名称、修改项的名称、其旧值和新值 有人能指导我如何做到这一点吗 听起来有可能。创建一个从SPItemEventReceiver继承的类并重写ItemUpdate。您可以使用以下代码获取列表: using (SPWeb web

我正在SharePoint发布网站上工作,希望在SharePoint列表中记录用户所做的所有更改

网上的一些搜索引导我找到了EventReceiver。 但我的EventReceiver必须是通用的,并附加到网站集中的所有列表中。日志列表有几个列,如事件发生的列表的名称、修改项的名称、其旧值和新值


有人能指导我如何做到这一点吗

听起来有可能。创建一个从SPItemEventReceiver继承的类并重写ItemUpdate。您可以使用以下代码获取列表:

    using (SPWeb web = properties.OpenWeb())
    {
        SPList list = web.Lists[properties.ListId];
    }
然后,您可以使用列表获取列表的标题和URL。接下来,将properties.AfterProperties中的每个DictionaryEntry条目与properties.ListItem中的相应值进行比较,以获得差异。然后将其保存到日志列表中。诀窍是自动将事件接收器附加到每个新创建的列表。也许一个定时器工作会起作用

也就是说


在尝试任何操作之前,请转到网站集的网站设置。在“网站集管理”下,单击“网站集审核设置”。在“指定要审核的文档和项目事件”下,选中“编辑项目”。只有在自定义解决方案不能满足您的需要时,才能使用该解决方案。

版本历史记录是否不能实现相同的功能

您可以查看由谁和何时更改的字段。尽管你必须逐条查看

如果要生成报告web部件,还可以通过对象模型访问版本历史信息


否则,使用Janis Veinbergs链接了解如何将事件处理程序附加到所有列表,并使用Rich Bennema方法以通用方式从更新的项中获取值,虽然我会使用ItemUpdated,因为您不想更改已更新的数据,只需将其复制到另一个位置,因此在将数据提交到SharePoint数据库之前无需捕获数据

,但他实际上在谈论一种解决方案,其中我的EventReceiver必须是通用的,并附加到网站集合中的所有列表。他的问题可以简化如下:我想将用户所做的所有更改记录在sharepoint列表中。有人能指导我如何做到这一点吗。事件接收器可能是白费力气,但为了以防万一,我提出了一个通用实现。他的总体问题的第一个答案应该是审计设置,无论是OOTB还是自定义设置。只有在审核不充分的情况下,事件接收器才是次要解决方案。我选择了ItemUpdate,以防您只想记录已更改的字段。在ItemUpdate中,AfterProperties值将与ListItem中的值相同。和BeforeProperties仅适用于文档库。有关更多信息,请参阅我看到,这样您就无法检查AfterProperties是否与ItemUpdated中的ListItem不同,谢谢您的清理。