当前位置:  开发笔记 > 编程语言 > 正文

SharePoint中默认的版本控制

如何解决《SharePoint中默认的版本控制》经验,为你挑选了2个好方法。

如何修改SharePoint网站,以便默认情况下在文档库中打开版本控制?



1> Nico..:

版本控制不是在站点级别完成,而是在列表级别完成.

如果要在每个新库上打开版本控制,则必须:

使用您自己的库模板(打开版本控制)

使用功能+事件处理程序以编程方式激活每个新列表上的版本控制

最简单的方法可能是使用您自己的模板.为此,请创建新文档库,激活版本控制,然后将此列表另存为模板.

创建新列表时,您将能够使用模板并直接创建激活版本控制的列表.



2> Bryan Friedm..:

您当然可以创建自己的网站定义,但这可能不是最佳解决方案.创建自定义库模板也会起作用,但如果要为特定网站定义为您创建的库启用版本控制,则必须提供其他内容.

我们碰巧为我们的SharePoint实现做了这个.我们决定最好的方法是创建一个事件处理程序功能并将其装订到所有站点,以便在创建站点时,将为所有现有文档库启用版本控制.当然,新文档库将获得创建它的用户设置的任何版本选项.

我们遇到的问题是没有"ListCreating"事件处理程序,因此我们无法在此时打开版本控制.因此,我们尝试将代码放在FeatureActivated事件处理程序中,确定它将在创建站点时激活,然后可以更改所有文档库以打开版本控制.问题是在实际创建库之前触发了此事件.

因此,我们决定将代码放入"ItemAdding"事件处理程序,并在第一次运行后将其删除.因此,当用户第一次添加列表项或文档时,它将为站点中的所有文档库启用版本控制.这样,我们确保用户无法在没有版本化的情况下将文档添加到现有库.此外,在添加项目之前创建的任何库也将默认启用版本控制.

这是一个多毛的解决方案,但它对我们来说非常有效.这是我们使用的代码:

public class SetVersioning : SPItemEventReceiver
{
    public override void ItemAdding(SPItemEventProperties properties)
    {
        SPWeb CurrentWeb = properties.OpenWeb();
        foreach (SPDocumentLibrary doclib in CurrentWeb.GetListsOfType(SPBaseType.DocumentLibrary))
        {
            doclib.EnableVersioning = true;
            doclib.MajorVersionLimit = 8;
            //doclib.EnableMinorVersions = true;
            doclib.Update();
        }
        //now get rid of the receiver
        SPEventReceiverDefinitionCollection receivers = CurrentWeb.EventReceivers;
        foreach (SPEventReceiverDefinition definition in receivers)
        {
            if (definition.Name.Equals(EVENT_RECEIVER_NAME))
            {
                definition.Delete();
                break;
            }
        }

        base.ItemAdding(properties);
    }
}

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有