2

リスト アイテムの UI バージョン番号 (SharePoint の Web インターフェイスに表示されるバージョン番号) を変更するプログラムを作成する必要があります。

例: アイテムには次のバージョンがあります: 1.0、1.1、1.2、2.0、2.2、2.3 2.2 バージョンのラベルを 2.1 に変更したいです。

私が知っているように、オブジェクト モデルでは不可能なので、データベースを直接変更する必要があります。データベースには、関連する 2 つのテーブルがあります。

  • AllDocs - このテーブルには、ドキュメントの現在のバージョンを説明する行があります。

  • AllDocVersions - このテーブルには、ドキュメントの他の (最新ではない) バージョンを説明する行があります。

現在のバージョンを変更する必要がなければ、それほど難しくはありません。右側のテーブルの UIversion フィールドを変更するだけです。(例: 2.2 から 2.1) 問題は、バージョン変更によって現在のバージョンが変更された場合です。例: 2.2 から 2.4。この場合、バージョン 2.2 のレコードを AllDocVersions テーブルから AllDocs に移動し、バージョン 2.3 のレコードを AllDocs から AllDocVersions に移動する必要がありますが、これら 2 つのテーブルの構造は同じではありません。

これらのテーブルの不足しているフィールドを埋める方法を誰か説明できますか? バージョン変更のための他の方法を提案できる人はいますか?

4

2 に答える 2

0

1つの、それほど簡単ではない解決策は次のとおりです。

  1. 大変な作業は SharePoint に任せて、一般的な SharePoint API を使用して として復元v2.2v2.4ます。それはあなたのために2つのことをします:
    • v2.2からasおよびasAllDocVersionsへのコピーAllDocsv2.4
    • v2.3からAllDocsに移動しAllDocVersionsます。
    • Web インターフェースから可能ですので、.NET アプリケーションでも利用できると思います。
  2. を削除しv2.2ます。
  3. が目的のバージョン番号でない場合は、SQL UPDATE ステートメントを使用してデータベース内の などのバージョン番号を直接更新できv2.4ます。v2.5v3.0v2.4
于 2012-09-20T20:39:52.997 に答える
0

これにより、正しい方向に進むことができます。

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

出典: SP2010 での UI バージョンの変更

于 2012-07-09T13:50:53.227 に答える