巨大なページをいくつかの「一口サイズ」のチャンクに分割しました。それらを一度に 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番目の方法がありますか?