2012-02-02 15 views
5

Estoy creando la lista basada en una plantilla de lista personalizada. La lista está creando, pero la plantilla de lista personalizada no se aplica a mi lista.Cómo creo una nueva lista a partir de una plantilla de lista (Modelo de objetos cliente)

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

¿Cómo se puede modificar mi código para obtener la lista personalizada?

+0

En primer lugar usted' No es nulo comprobar el objeto de la plantilla, por lo que es posible que no haya obtenido realmente la plantilla que busca. En segundo lugar, no se parece a un nombre de plantilla de lista para mí. – GavinB

Respuesta

6

Pruebe este código que se proporciona a continuación. Debería funcionar para usted. Avísame si encuentras algún 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(); 

Según Microsoft:ListCreationInformation members

TemplateFeatureId = Obtiene o establece un valor que especifica el identificador de entidad de la entidad que contiene el esquema de la lista para la nueva lista

+1

Este casi funcionó para mí. Todo lo que necesitaba agregar era listCreationInfo.TemplateType = listTemplate.ListTemplateTypeKind; –

+0

Esto no funcionó para mí en una lista de "Aplicación de acceso", y algunos otros. También ClientContext implementa IDisposable así que asegúrese de usar una declaración "using" en el objeto de contexto. –

Cuestiones relacionadas