1

巨大なページをいくつかの「一口サイズ」のチャンクに分割しました。それらを一度に 1 つずつユーザーに提示したいと考えています。1 ページ後、HTML ボタン (「次へ」) をクリックすると、前の Web パーツまたはコンテンツ エディター Web パーツが次の Web パーツに置き換えられます。

このページから、いくつかの疑似コードを思いつきました (以下の疑似コードのように、呼び出すことができる SPLimitedWebPartManager.RemoveWebPart() メソッドがあるかどうか、または現在の参照を取得する方法はわかりません (about-to-置き換えられます) [コンテンツ エディター] Web パーツですが、これが基本的な考え方です。

using (SPSite site = new SPSite("http://~"))
{
    SPWeb web = site.RootWeb;
    SPFile page = web.GetFile("Pages/Web_Form_Post_Travel_Expense.aspx");
    page.CheckOut();

    using (SPLimitedWebPartManager wpmgr = page.GetLimitedWebPartManager(PersonalizationScope.Shared))
    {
        XmlElement d = new XmlDocument().CreateElement("div");
        d.InnerText = get
        ContentEditorWebPart cewp = new ContentEditorWebPart
        {
            Content = d
        };
        ContentEditorWebPart currentCEWP = ?;
        wpmgr.RemoveWebPart(currentCEWP);
        wpmgr.AddWebPart(cewp, "Header", 0);
    }

    page.CheckIn(String.Empty);
}

これは理にかなっていますか?ページをチェックアウトし、変更し、再度チェックインするというのは、私には下品で、まったく奇妙にさえ思えます。

現時点で他に考えられる唯一の方法は、シバン全体を 1 つの Web パーツに配置することですが、最初はセクション 2 ~ 6 を非表示にしてから、(前のセグメントを非表示にしてから) 1 つのセグメントを連続して表示します。IOW、このタイプの手順:

First Section shows
All others hidden

User selects "Next" button

First section is hidden
Second section shows, while all others remain hidden.

etc.

実際、どちらのアイデアも、少なくとも私には少し不安定に思えます。1つのアプローチが望ましいですか、それとも両方よりも優れているとは思わなかった3番目の方法がありますか?

4

1 に答える 1

1

CheckOut ()CheckIn(文字列値)とは何ですか? それが質問ですか?

Microsoft.SharePoint 名前空間SPSite クラスを見ましたが、何も定義されていないようです。

私の推測では、これは別の人が開いているドキュメントにロックをかける方法だと思います。

次のサポート アイテムを参照してください。

そうすれば、Mark Twainが編集のためにチェックアウトされている場合、他の誰もそれをチェックアウトして編集することはできません。

一方、コンテンツを表示するだけの場合は、セクションをチェックアウトし、すべてを StringBuilder に読み込み、コンテンツを SharePoint にチェックインして、必要に応じてテキストを表示できます。

于 2015-09-17T17:17:53.683 に答える