Программно определить список задач — ArgumentException 'HierarchyParentKeyColumnName'

Я пытаюсь программно добавить список задач с новой временной шкалой в свое решение. Однако он кажется несовместимым с моим ContentType. ContentType наследуется от Task, но должен удалить поля PercentComplete, AssignedTo и Priority и переименовать DueDate и StartDate. Мой тип контента выглядит так:

<!--PercentComplete-->
<FieldRef ID="{d2311440-1ed6-46ea-b46d-daa643dc3886}" Hidden="TRUE" />
<!--AssignedTo-->
<FieldRef ID="{53101f38-dd2e-458c-b245-0c236cc13d1a}" Hidden="TRUE" />
<!--PreviouslyAssignedTo-->
<FieldRef ID="{1982e408-0f94-4149-8349-16f301d89134}" Hidden="TRUE"/>
<!--Priority-->
<FieldRef ID="{a8eb573e-9e11-481a-a8c9-1104a54b2fbd}" Hidden="TRUE" />

<!--Title-->
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Required="TRUE" />
<!--LinkTitle-->
<FieldRef ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" />
<!--LinkTitleNoMenu-->
<FieldRef ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" />

<!--DueDate-->
<FieldRef ID="{cd21b4c2-6841-4f9e-a23a-738a65f99889}" DisplayName="End of Task" Required="TRUE" />
<!--StartDate-->
<FieldRef ID="{64cd368d-2f95-4bfc-a1f9-8d4324ecb007}" DisplayName="Start of Task" Required="TRUE" />

<!--Checkmark-->
<FieldRef ID="{ebf1c037-47eb-4355-998d-47ce9f2cc047}" />
<!--Body-->
<FieldRef ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" />
<!--Predecessors-->
<FieldRef ID="{c3a92d97-2b77-4a25-9698-3ab54874bc6f}" />
<!--RelatedItems-->
<FieldRef ID="{d2a04afc-9a05-48c8-a7fa-fa98f9496141}" />
<!--Status-->
<FieldRef ID="{c15b34c3-ce7d-490a-b133-3f4de8801b76}" />

<!--ParentID-->
<RemoveFieldRef ID="{fd447db5-3908-4b47-8f8c-a5895ed0aa6a}" />

Предыдущий AssignedTo скрыт из-за скрытого AssignedTo. Если я не удалю ParentID, функция не активируется (выдает ошибку)! Любой, с удаленным полем, функция активируется, но список выдает ошибку. Я озадачен.

Список представляет собой простой список задач с добавленным выше типом содержимого (стандартная задача удалена) и типом, установленным на 171 для списка задач. Я добавил список с помощью мастера Visual Studio и изменил тип содержимого с помощью мастера, затем просто перешел к xml и изменил тип.

Это сообщение об ошибке:

HierarchyParentKeyColumnName 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.ArgumentException: HierarchyParentKeyColumnName

Source Error: 
 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 
[ArgumentException: HierarchyParentKeyColumnName]
   Microsoft.SharePoint.JSGrid.GridSerializer.EnableReservedHierarchy() +35354306
   Microsoft.SharePoint.JSGrid.SPGridSerializerGenerator.GenerateGridSerializer() +718
   Microsoft.SharePoint.JSGrid.SPGridSerializerGenerator.CreateGridSerializer() +257
   Microsoft.SharePoint.WebPartPages.XsltListViewWebPart.EnsureJSonObject() +1265
   Microsoft.SharePoint.WebPartPages.XsltListViewWebPart.OnPreRender(EventArgs e) +377
   Microsoft.SharePoint.WebPartPages.WebPartMobileAdapter.OnPreRender(EventArgs e) +108
   System.Web.UI.Control.PreRenderRecursiveInternal() +12756035
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Control.PreRenderRecursiveInternal() +222
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4297

Если вам нужна дополнительная информация, просто оставьте комментарий. Помощь очень ценится.


person efkah    schedule 16.03.2015    source источник


Ответы (1)


Всегда помогает собраться с мыслями, просто сформулировав свой вопрос для stackoverflow ;) Я попытался решить ошибку с помощью ParentID для вас, ребята, чтобы вы могли сосредоточиться на реальной проблеме. Оказывается, ParentID был настоящей проблемой.

Я добавил цель поиска:

<!--ID-->
<FieldRef ID="{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}" />
<!--ParentID-->
<FieldRef ID="{fd447db5-3908-4b47-8f8c-a5895ed0aa6a}" />

И (что более важно) изменил определение поля поиска "self" родительского contentTypes (Task) на фактический экземпляр списка.

<Field Type="Lookup" 
       Indexed="TRUE" 
       Name="ParentID" 
       ID="{fd447db5-3908-4b47-8f8c-a5895ed0aa6a}" 
       Hidden="TRUE" 
       Required="FALSE" 
       List="$Resources:core,lists_Folder;MyTaskList" RelationshipDeleteBehavior="Cascade" 
       ShowField="ID" DisplayName="$Resources:core,Parent_ID;" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="ParentID"></Field>
person efkah    schedule 16.03.2015