2013-03-07 2 views
2

Я добавил шаблон библиотеки документов, используя VS 2012., а затем добавил в эту библиотеку настраиваемые типы контента. типы контента включают 3 поля управляемых метаданных. После развертывания проекта, когда я добавить термины в таксономии полей в библиотеке документов, я получил следующее сообщение об ошибке:Обновляемый SPListItem не был получен со всеми полями таксономии

«SPListItem обновляется не было извлечено со всеми полями таксономии»

я не смог найти какое-либо решение. У любого органа есть идея, что случилось?

ответ

2

В Elements.xml файл ContentType вашего поля (на самом деле вам нужны два, обратите внимание, как они связаны между собой совмещены) должен быть что-то вроде:

<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> 

Затем вам нужно (в полнометражном активированном коде) сделайте следующее:

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

Наконец, в файле schema.xml в определении списка вы должны иметь такое определение, как это для поля:

<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> 
Смежные вопросы