2013-03-07 1 views
2

J'ai ajouté un modèle de bibliothèque de documents à l'aide de VS 2012. puis ajouté des types de contenu personnalisés à cette bibliothèque. les types de contenu incluent 3 champs de métadonnées gérées. Après avoir déployé le projet quand j'ajouter des termes à des champs de taxonomie dans la bibliothèque de documents, je suis erreur suivant:Le SPListItem en cours de mise à jour n'a pas été récupéré avec tous les champs de taxonomie

« Le SPListItem mise à jour n'a pas été récupéré avec tous les champs de taxonomie »

Je ne pouvais pas trouver une solution. Tout le monde a une idée de ce qui ne va pas?

Répondre

2

Dans le fichier Elements.xml du contenttype votre domaine (en fait, vous avez besoin de deux, notez la façon dont ils sont liés togheter) doit être quelque chose comme:

<Field Type="Note" 
    ID="{4B53F593-CF60-40DF-AEAF-23155BB9AA3F}" 
    DisplayName="_Circular_Tags" 
    Name="Circular_Tags_NOTE" 
    StaticName="Circular_Tags_NOTE" 
    ShowInViewForms="FALSE" 
    Required="FALSE" 
    Hidden="TRUE" 
    CanToggleHidden="TRUE" 
    RowOrdinal="0"> 
    </Field> 
    <Field Type="TaxonomyFieldTypeMulti" 
    ID="{DF553026-F699-456F-AA24-0C6087DBE885}" 
    Name="Circular_Tags" 
    StaticName="Circular_Tags" 
    DisplayName="Circular_Tags_DisplayName" 
    Description="Circular_Tags_Description" 
    ShowField="Circular_Tags_Path" 
    Required="FALSE" 
    Sortable="FALSE" 
    AllowDeletion="TRUE" 
    EnforceUniqueValues="FALSE" 
    ShowInViewForms="TRUE" 
    Group="MyContentTypes_Group"> 
    <Default></Default> 
    <Customization> 
     <ArrayOfProperty> 
     <Property> 
      <Name>TextField</Name> 
      <Value xmlns:q6="http://www.w3.org/2001/XMLSchema" p4:type="q6:string" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance">{4B53F593-CF60-40DF-AEAF-23155BB9AA3F}</Value> 
     </Property> 
     </ArrayOfProperty> 
    </Customization> 
    </Field> 

Ensuite, vous avez besoin (dans le code activé fonctionnalités) procédez comme suit:

SPSite site = properties.Feature.Parent as SPSite; 
Guid fieldId = new Guid("{DF553026-F699-456F-AA24-0C6087DBE885}"); 
if (site.RootWeb.Fields.Contains(fieldId)) 
{ 
    TaxonomySession session = new TaxonomySession(site); 
    if (session.TermStores.Count != 0) 
    { 
     var termStore = session.TermStores["ManagedMetadata_Proxy"]; 
     var group = termStore.Groups["GroupName"]; 
     var termSet = group.TermSets["TermSetName"]; 
     TaxonomyField field = site.RootWeb.Fields[fieldId] as TaxonomyField; 

     //set the text field to the id of the _Circular_Tags field : 4B53F593-CF60-40DF-AEAF-23155BB9AA3F 
     field.TextField = new Guid("{4B53F593-CF60-40DF-AEAF-23155BB9AA3F}"); 

     // Connect to MMS 
     field.SspId = termSet.TermStore.Id; 
     field.TermSetId = termSet.Id; 
     field.TargetTemplate = string.Empty; 
     field.AnchorId = Guid.Empty; 
     field.Update(); 
    } 
} 

Enfin dans le fichier sCHEMA.XML dans la définition de la liste, vous devriez avoir une définition comme celui-ci pour le champ:

<Field Type="TaxonomyFieldType" ID="{DF553026-F699-456F-AA24-0C6087DBE885}" Name="Circular_Tags" StaticName="Circular_Tags" DisplayName="Circular_Tags_DisplayName" Description="Circular_Tags_Description" ShowField="Circular_Tags_Path" Mult="TRUE" Required="FALSE" Sortable="FALSE" AllowDeletion="TRUE" EnforceUniqueValues="FALSE" ShowInViewForms="TRUE" Group="ContentTypes_Group"> 
     <Default></Default> 
     <Customization> 
      <ArrayOfProperty> 
      <Property> 
       <Name>TextField</Name> 
       <Value xmlns:q6="http://www.w3.org/2001/XMLSchema" p4:type="q6:string" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance">{4B53F593-CF60-40DF-AEAF-23155BB9AA3F}</Value> 
      </Property> 
      </ArrayOfProperty> 
     </Customization> 
     </Field> 
Questions connexes