2012-02-02 23 views
5

カスタムリストテンプレートに基づいてリストを作成しています。リストが作成されていますが、カスタムリストテンプレートは自分のリストには適用されません。リストテンプレート(クライアントオブジェクトモデル)から新しいリストを作成する方法

ListTemplate template = null; 
ListTemplateCollection ltc = context.Site.GetCustomListTemplates(context.Web); 
context.Load(ltc); 
context.ExecuteQuery(); 

foreach (ListTemplate t in ltc) 
{ 
    if (t.InternalName == "STPDiv.stp") 
    { 
     template = t; 
     break; 
    } 
} 

ListCreationInformation info = new ListCreationInformation(); 
info.Title = "TestCreation"; 
info.TemplateType = template.ListTemplateTypeKind; 
info.TemplateFeatureId = template.FeatureId;   
info.QuickLaunchOption = QuickLaunchOptions.DefaultValue; 
site.Lists.Add(info); 
context.ExecuteQuery(); 

カスタムリストが適用されるようにコードを変更するにはどうすればよいですか?

+0

まず新しいリストのリストのスキーマが含まれている機能の機能識別子を指定する値を設定します」テンプレートオブジェクトをヌルではないので、実際にテンプレートを取得していない可能性があります。第二に、それは私にリストテンプレートの名前のように見えません。 – GavinB

答えて

6

下記のコードを試してみてください。それはあなたのために働くはずです。問題が発生した場合は教えてください。マイクロソフトあたりとして

ClientContext context = new ClientContext("<Your Site URL>"); 
Web site = context.Web;    
context.Load(site); 
context.ExecuteQuery(); 

//Create a List. 
ListCreationInformation listCreationInfo; 
List list; 

listCreationInfo = new ListCreationInformation(); 
listCreationInfo.Title = "<Your Title>"; 
listCreationInfo.Description = "<Your Description>"; 

var listTemplate = 
      site.ListTemplates.First(listTemp => listTemp.Name == "<Your Template Name>"); 
listCreationInfo.TemplateFeatureId = listTemplate.FeatureId; 

list = site.Lists.Add(listCreationInfo); 
context.ExecuteQuery(); 

ListCreationInformation members

TemplateFeatureId =取得または

+1

これはほとんど私のために働いた。私が追加する必要があったのはlistCreationInfo.TemplateType = listTemplate.ListTemplateTypeKindでした。 –

+0

これは "Access App"リストやその他のもので私にとってはうまくいきませんでした。また、ClientContextはIDisposableを実装しているので、コンテキストオブジェクトに対して "using"ステートメントを使用してください。 –

関連する問題