2009-05-28 7 views
2

J'ai un modèle de liste dans une galerie de modèles de liste MOSS et je dois créer une liste à l'aide de ce modèle à partir d'un récepteur de fonctions. Cela semble vraiment facile, mais je ne peux pas trouver un moyen de le faire.Comment créer une liste Sharepoint via un récepteur de fonctions et un modèle de liste existant

SPWeb a une méthode GetCatalog qui renvoie un SPList avec 1 élément - mon modèle - mais c'est un SPListItem et j'ai besoin d'un SPListTemplate. Comment puis-je 'convertir' l'article au bon type?

Merci

+0

Oh et j'ai essayé d'utiliser GetCustomListTemplates mais cela retourne une collection vide :( – Jonesie

Répondre

0

Utilisez la méthode GetCustomListTemplates de l'objet SPSite pour obtenir l'objet SPListTemplate représentant votre modèle personnalisé. Utilisez ensuite la méthode SPListCollection.Add pour créer une nouvelle liste à partir de ce modèle. Dans le code cela ressemblerait à quelque chose comme ceci:

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

Désolé, GetCustomListTemplates retourne une liste vide – Jonesie

0

Vous devez utiliser le InternalName ... quelque chose comme ceci:

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

web.ListTemplates ne contient pas notre modèle personnalisé.Fracked si je sais pourquoi ... – Jonesie

0

Ainsi, nous avons renoncé et ont utilisé à la place d'un récepteur de fonctionnalité pour créer la liste totalement du code. ListDefs est un PITA-C# complet est un moyen beaucoup plus logique de créer des listes, plus vous avez l'avantage de pouvoir coder les mises à jour des listes.

Merci à tous.

0

Lisez ma réponse à cette question. Avec cela, vous devriez obtenir un résultat de GetCustomListTemplates au lieu d'une liste vide.

Questions connexes