更改SharePoint列表项版本号

时间:2012-07-05 14:26:28

标签: .net sharepoint

我必须创建一个程序来更改列表项的UI版本号(在SharePoint的Web界面上显示的版本号)。

例如:     这些版本的项目有:1.0,1.1,1.2,2.0,2.2,2.3     我想将2.2版本的标签更改为2.1。

据我所知,通过对象模型是不可能的,所以我必须直接修改数据库。 在数据库中有两个相关的表:

  • AllDocs - 在此表中有行描述文档的当前版本。

  • AllDocVersions - 在此表中有行描述文档的其他(非当前)版本。

如果我不必更改当前版本并不是那么困难,只有我更改了右表中的UIversion字段。 (在示例中:2.2到2.1) 问题是版本更改是否更改了当前版本。在示例中:2.2到2.4。 在这种情况下,我应该将版本2.2的记录从AllDocVersions表移动到AllDocs,以及从AllDocs到AllDocVersions的版本2.3的记录,但这两个表的结构不相同。

有人能描述我如何填写这些表中缺少的字段吗? 任何人都可以建议任何其他方式的版本更改?

2 个答案:

答案 0 :(得分:0)

这可能会让你开始朝着正确的方向前进:

using (SPSite siteCollection = new SPSite("http://sp2010-server"))
{
    SPWeb site = siteCollection.OpenWeb()
    {
        site.UIVersion = 3;
        site.UIVersionConfigurationEnabled = true;
        site.Update();
    }
} 

来源:Altering the UI Version in SP2010

答案 1 :(得分:0)

其中一个不太容易解决的问题可能是:

  1. 让SharePoint完成繁重的工作,使用通用的SharePoint API将v2.2还原为v2.4。它为你做了两件事:
    • v2.2AllDocVersions复制到AllDocs作为v2.4
    • v2.3AllDocs移至AllDocVersions
    • 可以通过Web界面,所以我认为它也适用于.NET应用程序。
  2. 删除v2.2
  3. 然后,如果v2.4不是,则可以使用SQL UPDATE语句直接更新数据库中v2.5v3.0v2.4等的版本号所需的版本号。