2009-05-28 11 views
2

MOSSリストテンプレートギャラリーにリストテンプレートがあり、このテンプレートをフィーチャレシーバから作成する必要があります。これは本当に簡単ですが、私はこれを行う方法を見つけることができません。フィーチャレシーバと既存のリストテンプレートを使用してSharepointリストを作成するには

SPWebには、1つのアイテム(テンプレート)を含むSPListを返すGetCatalogメソッドがありますが、それはSPListItemであり、SPListTemplateが必要です。アイテムを正しいタイプに変換するにはどうしたらいいですか?

おかげ

+0

私はGetCustomListTemplatesを使用しようとしましたが、空のコレクションを返します:( – Jonesie

答えて

0

は、カスタムテンプレートを表すSPListTemplateオブジェクトを取得するためにSPSiteオブジェクトのGetCustomListTemplatesメソッドを使用します。次に、SPListCollection.Addメソッドを使用して、このテンプレートから新しいリストを作成します。

foreach (SPListTemplate template in web.ListTemplates) 
{ 
    if (template.InternalName.Equals("MyTemplateName") 
    { 
     return template; 
    } 
} 
+0

申し訳ありませんが、GetCustomListTemplatesは空のリストを返します – Jonesie

0

を:コードでは、これはこのようになりますコードからのリストListDefsは完全なPITAです - C#はリストを作成するもっと論理的な方法です。さらに、リストへのアップグレードをコード化できるという追加の利点があります。

ありがとうございます。

+0

web.ListTemplatesにはカスタムテンプレートが含まれていません。 – Jonesie

0

だから、私たちはあきらめ、代わりに作成する機能受信機を使用している:あなたは... internalnameを使用するには、このような何かを持っている

using (SPSite site = new SPSite("http://server/sites/site")) 
using (SPWeb web = site.OpenWeb()) 
{ 
    SPListTemplateCollection templates = site.GetCustomListTemplates(web); 
    SPListTemplate template = templates["MyTemplates"]; 
    Guid listId = web.Lists.Add("Title", "Description", template); 
} 
0

私の答えはquestionです。これで、空のリストではなくGetCustomListTemplatesから結果を取得する必要があります。

関連する問題