2012-02-02 1 views
5

Sto creando l'elenco in base al modello di elenco personalizzato. L'elenco sta creando, ma il modello di elenco personalizzato non viene applicato per il mio elenco.Come creare un nuovo elenco da un modello di elenco (modello a oggetti client)

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(); 

Come è possibile modificare il codice per applicare l'elenco personalizzato?

+0

In primo luogo è' non è nullo controllare l'oggetto modello, quindi potresti non aver ottenuto il modello che stai cercando. In secondo luogo, non mi sembra un nome di modello di elenco. – GavinB

risposta

6

Prova questo codice indicato di seguito. Dovrebbe funzionare per te. Fammi sapere se incontri qualche problema.

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(); 

Secondo Microsoft:ListCreationInformation members

TemplateFeatureId = Ottiene o imposta un valore che specifica l'identificatore caratteristica della funzionalità che contiene lo schema lista per il nuovo elenco

+1

Questo ha quasi funzionato per me. Tutto quello che dovevo aggiungere era listCreationInfo.TemplateType = listTemplate.ListTemplateTypeKind; –

+0

Questo non ha funzionato per me su un elenco di "Access App", e pochi altri. Anche ClientContext implementa IDisposable, quindi assicurati di utilizzare un'istruzione "using" sull'oggetto di contesto. –