Webパーツのプログラムで2010年を作成します
-
16-10-2019 - |
質問
サイトがWSPでプロビジョニングされた後、いくつかのWebパーツを作成します。機能アクションでWPをゼロから作成できます。または、ギャラリーにWPのセットを保存し、必要に応じてインスタンスを作成します。サイトテンプレート用のWSPは、これらのWPが移動するリストとライブラリも作成します。私が理にかなっていることを願っています。サイトが規定であるときにWPを作成するための私の最良のオプションは何ですか。プロビジョニングサイトの最後にWPを作成するためにいくつかのコードを追加する必要があるので、すべてのリストが作成されたことを確認します。提案してください。
解決
OK、この環境があると考えてください:
- 農場レベルのWSPファイルがあります(これはこの状況でもサンドボックス化される可能性がありますが、明確にするために、それが農場のものだと考えてみましょう)。
- このWSPには、いくつかのリストとライブラリの定義/インスタンス、およびいくつかの視覚的なWebパートが含まれています。
- また、WSPファイルには、少なくとも1つの機能が含まれています。
- このWSPは農場に追加され、指定されたサイト収集に配備され、そこで機能がアクティブになります。そのため、リストとライブラリが作成され、Webパートがギャラリーに追加されます。
- これがすべて完了した後、「default.aspx」サイトページでWebパート「WebPart1」をインスタンス化します。
この時点から、私たちの目標を達成するために、機能レシーバーにいくつかのコードを(featureactivatedに)追加することができます。このコードは次のようになります:
// prepare the webpart
var webPart = new WebPart1();
// ...here you can initialize some webpart properties, if needed
// fetch SPFile object for default.aspx page
SPFile page = web.RootFolder.Files["default.aspx"];
if (page.Exists)
{
// ...here you probably need to check out the page if it is a publishing site
// get LimitedWebPartManager object for the page
var webPartManager = page.GetLimitedWebPartManager(PersonalizationScope.Shared);
// add our webpart into the 'Main' webpart zone, using zone index = 1
webPartManager.AddWebPart(webpart, "Main", 1);
// ...do not forget to commit your changes here if you are using publishing site
// save our changes
page.Update();
}
MSDN参照:
所属していません sharepoint.stackexchange