Sharepoint 如何限制文档库列表定义中要维护的主要版本的数量?

Sharepoint 如何限制文档库列表定义中要维护的主要版本的数量?,sharepoint,sharepoint-2007,Sharepoint,Sharepoint 2007,我这里有两个问题 情景: 我已经用自己的列表定义创建了一个文档库,具有默认的文档库设置。有相当多的文档库是使用我的定义创建的。现在我想更改版本设置,将主要版本的数量限制为5个 我遇到了模式文件的“MajorVersionLimit”列表元素属性,不幸的是,这仅适用于内容迁移模式。这对我不起作用 问题1: 是否有任何简单的机制可以在我的网站集中启用此类设置? 我知道我可以写一段.NET代码来改变这一点。 问题2: 如果我这样做,它会将列表从其列表定义中分离出来吗? 提前谢谢。 ~Yuva我不知道如

我这里有两个问题

情景: 我已经用自己的列表定义创建了一个文档库,具有默认的文档库设置。有相当多的文档库是使用我的定义创建的。现在我想更改版本设置,将主要版本的数量限制为5个

我遇到了模式文件的“MajorVersionLimit”列表元素属性,不幸的是,这仅适用于内容迁移模式。这对我不起作用

问题1: 是否有任何简单的机制可以在我的网站集中启用此类设置?

我知道我可以写一段.NET代码来改变这一点。 问题2: 如果我这样做,它会将列表从其列表定义中分离出来吗?

提前谢谢。
~Yuva

我不知道如何通过配置文件设置这些值,但它们在SPList对象上公开。因此,诀窍是找到一种方法来捕获从模板创建新列表的时间,然后适当地设置字段(和)

我还没试过,但我从这里开始

  • 在配置文件中,将“NewPage”属性设置为当用户单击UI中的“创建”按钮时应显示的aspx页面
  • 在该页面的代码隐藏中,手动创建列表(使用OM)并设置属性

  • 也许有更好的办法,但我看不出来。祝你好运。

    我不知道如何通过配置文件设置这些值,但它们在SPList对象上公开。因此,诀窍是找到一种方法来捕获从模板创建新列表的时间,然后适当地设置字段(和)

    我还没试过,但我从这里开始

  • 在配置文件中,将“NewPage”属性设置为当用户单击UI中的“创建”按钮时应显示的aspx页面
  • 在该页面的代码隐藏中,手动创建列表(使用OM)并设置属性

  • 也许有更好的办法,但我看不出来。祝你好运。

    MajorVersionLimit参数确实适用于schema.xml。每次编辑此文档库中的文件时,请记住选中“创建版本”选项。

    主版本限制参数确实适用于schema.xml。请记住,每次编辑此文档库中的文件时,都要选中“创建版本”选项。

    我认为修改现有网站的最简单方法是编写一个小的PowerShell脚本,设置spWeb.MajorVersionLimit,如下所示:

    #Set up connection
    
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
    $spSite = new-object Microsoft.SharePoint.SPSite($siteurl) 
    
    for($i=0; $i -lt $spSite.AllWebs.Count;$i++)
    
    {
    
        $spWeb = $spSite.AllWebs[$i]
        for($j=0; $j -lt $spWeb.Lists.Count;$j++)
        {
            $aList = $spWeb.Lists[$j]
            if( $aList.Title -ceq "dokumenter") # case sensitive
            {
                if( $aList.EnableVersioning -eq $false)
                {
                    $aList.EnableVersioning = $true
                    $aList.MajorVersionLimit = 5;
                    $aList.Update()
                }
            }
        }
    

    在我看来,修改现有网站最简单的方法是编写一个小的PowerShell脚本,设置spWeb.MajorVersionLimit,如下所示:

    #Set up connection
    
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
    $spSite = new-object Microsoft.SharePoint.SPSite($siteurl) 
    
    for($i=0; $i -lt $spSite.AllWebs.Count;$i++)
    
    {
    
        $spWeb = $spSite.AllWebs[$i]
        for($j=0; $j -lt $spWeb.Lists.Count;$j++)
        {
            $aList = $spWeb.Lists[$j]
            if( $aList.Title -ceq "dokumenter") # case sensitive
            {
                if( $aList.EnableVersioning -eq $false)
                {
                    $aList.EnableVersioning = $true
                    $aList.MajorVersionLimit = 5;
                    $aList.Update()
                }
            }
        }
    

    事实并非如此,您可以通过Scheme.xml(作为列表元素属性)设置MajorVersionLimit,它对我来说非常有效。intellisense不支持这些属性


    这个解决方案是在Doug“bobthebuilder”McCusker博客()上描述的。

    事实并非如此,您可以通过Scheme.xml(作为列表元素属性)设置MajorVersionLimit,它对我来说非常有效。intellisense不支持这些属性

    Doug“bobthebuilder”McCusker博客()中描述了该解决方案