あるサイトにお知らせリストがあります。各サブサイトの上部に Web パーツとして追加したいと考えています。MOSSでこれを行うにはどうすればよいですか?
6 に答える
この場合、データビューWebパーツを使用しました。他のサイトのリストからデータを取得するためのWebサービスデータソースを作成します。
このように:
いくつかのポイント。
最初に、WSS 3.0 を使用していると指定したため、CQWP は使用できません (これを使用するには、MOSS が必要であり、発行を有効にする必要があります)。強化されたコミュニティ エディションも、CQWP から派生しているため、機能しません。
第二に、DataFormWebPart は簡単なアプローチであることに Eugene Katz に同意します。また、彼が投稿したリンクとは少し異なる方法でそれを作成します。SharePoint Designer で、Web パーツを配置する目的のサイトを開きます。[タスク ペイン] メニューから [データ ソース ライブラリ] を選択し、ペインの下部にある [別のライブラリに接続...] をクリックして、アナウンス リストを含む親サイトを参照/選択します。これで、サイト上にあるかのように、[データ ソース ライブラリ] ペインに新しく作成されたノードからアナウンスを DataFormWebPart として追加できます。慣れていない場合は、Sharepoint Designer のヘルプに、これを行う方法が示されています。
好みに合わせて DataFormWebPart を設定したら、次の手順を実行することで、これを追加のサイトに簡単に追加できます。追加可能な Web パーツとして、サイト コレクション全体で使用できるようになります。
コンテンツクエリWebパーツまたはオープンソースの拡張コンテンツクエリWebパーツは、これを実現するための良い方法です。MOSSではなくWSSを使用している場合、Katz氏とAshwin氏の回答は受け入れられますが、この質問に回答する方法は異なります。
これを行うための非常に優れた Web パーツは、Codeplex の Content By Type Web パーツです。また、任意のサブサイト内の任意のリストから特定のコンテンツ タイプのアイテムを表示することもサポートしています。
SharePoint オブジェクト モデルを使用して、その特定のリストの SPList オブジェクトを取得する必要があります。同じ結果が得られたら、RenderAsHtml() メソッドを使用してリストをレンダリングできます。RenderAsHtml() メソッドは SPQuery オブジェクトをパラメーターとして受け取ることに注意してください。適切なクエリ文字列を使用して SPQuery オブジェクトを作成する必要があります。このコードは、カスタム Web パーツの RenderWebPart() メソッドのオーバーライドに入る可能性があります。
SPSite サイト = 新しい SPSite(siteURL);
SPWeb web = site.OpenWeb(webName);
SPList list = web.Lists[リスト名];
SPQuery クエリ = 新しい SPQuery();
query.Query = queryString;
文字列 html = list.RenderAsHtml(クエリ);
output.Write(html); //出力は、RenderWebPart メソッドの HtmlTextWriter オブジェクトです。