我必须创建一个程序来更改列表项的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的记录,但这两个表的结构不相同。
有人能描述我如何填写这些表中缺少的字段吗? 任何人都可以建议任何其他方式的版本更改?
答案 0 :(得分:0)
这可能会让你开始朝着正确的方向前进:
using (SPSite siteCollection = new SPSite("http://sp2010-server"))
{
SPWeb site = siteCollection.OpenWeb()
{
site.UIVersion = 3;
site.UIVersionConfigurationEnabled = true;
site.Update();
}
}
答案 1 :(得分:0)
其中一个不太容易解决的问题可能是:
v2.2
还原为v2.4
。它为你做了两件事:
v2.2
从AllDocVersions
复制到AllDocs
作为v2.4
和v2.3
从AllDocs
移至AllDocVersions
。v2.2
。v2.4
不是,则可以使用SQL UPDATE语句直接更新数据库中v2.5
到v3.0
,v2.4
等的版本号所需的版本号。