65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 SharePoint 2013 中为特定列表项创建日志(历史记录)?

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2016 年 7 月 29 日

CPOL
viewsIcon

11338

创建列表项的历史版本

引言

假设你有一个名为 Employees 的列表,其中有一个名为 Department 的项,并且你想跟踪 Department 的每次更改。对于拥有 500 多名员工的公司来说,日志非常有用。

实现此目标的方法有很多种。一种方法如下:

  • 创建一个名为 Departmentlog 的新列表列
  • 创建另一个名为 worklog 的列表列 - 此列应为 多行文本 类型,并在设置底部启用 将更改附加到现有文本
  • 打开 Visual Studio 并创建一个新项目,然后选择空的 SharePoint 项目
  • 在解决方案中,单击添加并添加新项,然后选择事件接收器
  • 你需要为所需的列表创建 2 个事件接收器。第一个事件接收器必须是“正在更新项”,第二个事件接收器必须是“项已更新”。

代码

对于第一个事件接收器,你必须具有以下代码

    public override void ItemUpdating(SPItemEventProperties properties)
    {
        base.ItemUpdating(properties);

        properties.AfterProperties["Departmentlog"] = 
               properties.ListItem["Department"].ToString(); //this one stores the old department.

        base.EventFiringEnabled = false;
        properties.ListItem.SystemUpdate(false);
        base.EventFiringEnabled = true;
    }

对于第二个事件接收器,你必须具有以下代码

public override void ItemUpdated(SPItemEventProperties properties)
    {
        base.ItemUpdated(properties);

        string dep = properties.ListItem["Department"].ToString();
        string loguDep = properties.ListItem["Departmentlog"].ToString();

        if (loguDep == dep) { }

        else if (loguDep != dep) // in this point we make sure that old department 
                                 // is not same as new department, because every updates 
                                 // that are applied same changes will be in log too 
                                 // this condition prevents from this mistake. 
        {
            properties.ListItem["worklog"] = "Department was changed from: " + 
                         properties.ListItem["Departmentlog"].ToString() + " To: " + 
                         properties.ListItem["Department"].ToString();
        }

        base.EventFiringEnabled = false;
        properties.ListItem.SystemUpdate(false);
        base.EventFiringEnabled = true;        
    }

构建并部署它。这应该可以正常工作。

© . All rights reserved.