2009-03-24 7 views
1

J'ai besoin d'un champ de choix (dans une colonne de site) pour référencer une liste que j'importe dans sharepoint. Cette liste sera très rarement mise à jour pour ajouter des choix supplémentaires. Comment pourrais-je créer cette colonne? Par programme?Champ de choix Sharepoint

Bien voir c'est une recherche par exemple ... juste essayer de comprendre comment le coder ... Je suppose que j'ai besoin d'importer la liste d'abord comme un nouveau type de contenu. Puis créez une colonne de recherche (avec plusieurs) pour le type de contenu?!?

Répondre

6

Voici un code qui ajoutera un champ de recherche à un type de contenu existant.

Si vous utilisez des définitions de liste, c'est la seule façon d'inclure un champ de recherche. Il ne peut pas être ajouté dans le CAML de la définition de liste car un guid pour la liste de recherche est requis et cela n'est pas connu auparavant. SharePoint génère automatiquement ce guide lorsque la liste est créée.

Vous devez d'abord créer la colonne de recherche dans la SPWeb racine du SPSite

private void CreateLookup(SPWeb web, SPList lookupList, String lookupField, String fieldName, String fieldGroup, bool allowMultiLookup) 
{ 
    using (SPSite site = web.Site) 
    { 
     using (SPWeb rootWeb = site.RootWeb) 
     { 
      rootWeb.Fields.AddLookup(fieldName, lookupList.ID, web.ID, false); 
      SPFieldLookup fieldLookup = (SPFieldLookup)rootWeb.Fields[fieldName]; 
      if (fieldLookup == null) return; 
      fieldLookup.AllowMultipleValues = allowMultiLookup; 
      fieldLookup.LookupField = lookupField; 
      fieldLookup.Group = fieldGroup; 
      fieldLookup.Title = fieldName; 
      fieldLookup.Update(true); 
     } 
    } 
} 

Et alors vous aurez besoin d'ajouter ce champ pour le type de contenu exsisting

private void AddLookupToContentType(SPWeb web, String fieldName, String contentTypeName) 
{ 
    using (SPSite site = web.Site) 
    { 
     using (SPWeb rootWeb = site.RootWeb) 
     { 
      SPFieldLookup lookupField = (SPFieldLookup)rootWeb.Fields[fieldName]; 
      if (lookupField == null) return; 
      SPContentType riskContentType = rootWeb.ContentTypes[contentTypeName]; 
      if (riskContentType == null) return; 
      riskContentType.FieldLinks.Add(new SPFieldLink(lookupField)); 
      riskContentType.Update(true); 
     } 
    } 
} 
0

Il semble qu'une colonne de recherche soit ce que vous recherchez. Vous devez d'abord importer la liste, puis créer la recherche en tant que colonne de site.

+0

bien voir c'est une recherche par exemple ... juste essayer de comprendre comment le coder ... Je suppose que j'ai besoin d'importer la liste d'abord comme un nouveau type de contenu. Puis créez une colonne de recherche (avec plusieurs) pour le type de contenu?!? – user38734

Questions connexes