2012-06-18 11 views
2

在Sharpoint 2010项目中,我有一个自定义内容类型,它继承标准的任务内容类型和一个自定义列表模板,其中包含此内容类型的项目(所有内容均以XML和代码形式完成,未点击-通过')。将甘特图视图添加到XML中的自定义列表模板。 <ViewData>未部署

我想将甘特图添加到我的列表中。我可以使用Web界面来完成,但我希望在代码中使用它。所以我已经手动完成了它,打开Sharepoint Manager,预览了视图模式,并且通过小的但必要的修改将它复制到了我的列表模式中。所以我最终得到了一个看起来更像这样的看法:

<View WebPartZoneID="Main" Type="GANTT" DisplayName="Gantt Chart" Url="gantt.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/images/issues.png" SetupPath="pages\viewpage.aspx"> 
    <Query> 
     <OrderBy> 
     <FieldRef Name="ID" /> 
     </OrderBy> 
    </Query> 
    <ViewFields> 
     <FieldRef Name="Attachments" /> 
     <FieldRef Name="ID" /> 
     <FieldRef Name="DocIcon" /> 
     <FieldRef Name="LinkTitle" /> 
     <FieldRef Name="AssignedTo" /> 
     <FieldRef Name="Status" /> 
     <FieldRef Name="Priority" /> 
     <FieldRef Name="StartDate" /> 
     <FieldRef Name="DueDate" /> 
     <FieldRef Name="MyCustomField" /> 
     <!-- other FieldRefs for my custom fields --> 
    </ViewFields> 
    <ViewData> 
     <FieldRef Name="StartDate" Type="GanttStartDate" /> 
     <FieldRef Name="DueDate" Type="GanttEndDate" /> 
     <FieldRef Name="Title" Type="GanttTitle" /> 
     <FieldRef Name="PercentComplete" Type="GanttPercentComplete" /> 
     <FieldRef Name="Predecessors" Type="GanttPredecessors" /> 
    </ViewData> 
    <RowLimit Paged="TRUE">30</RowLimit> 
    <Aggregations Value="Off" /> 
    </View> 

但是这不起作用。该视图在列表中可见,但是当我打开它时,会出现一个空白页面。由于某种原因,当我在Sharepoint Manager中预览自定义视图时,<ViewData>标记不存在。我可以在Sharepoint Manager中手动添加此标签,然后视图魔术开始工作。但是,由于某种原因,该标签未与其余视图一起部署。

关于如何使标签部署的任何建议?

+1

这只是一个随机猜测,但尝试更改'BaseViewID'属性。过去我遇到过这个问题,即使这个数字看起来是独一无二的,但在列表视图发生变化之前,还是有问题的。 –

+0

我添加了类似的东西,但是当我试图添加列表失败与“文件未找到”异常。 – Evgeny

+0

其实它对我来说是workds。我从xml中删除了所有计算和计算的字段,一切都变好了。另外我不使用ContentTypeID =“0x”。 – Evgeny

回答

0

我不确定你的声明有什么问题,但我能够将工作定义添加到模式中。这里是我的定义:

<View BaseViewID="9" Type="GANTT" WebPartZoneID="Main" DisplayName="Gantt view" SetupPath="pages\viewpage.aspx" ImageUrl="/_layouts/images/issues.png" Url="Gantt.aspx" ReqAuth="TRUE"> 
     <Toolbar Type="Standard" /> 
     <XslLink Default="TRUE">main.xsl</XslLink> 
     <RowLimit Paged="TRUE">30</RowLimit> 
     <ViewFields> 
      <FieldRef Name="LinkTitle" /> 
      <FieldRef Name="AssignedTo" /> 
      <FieldRef Name="TaskGroup" /> 
      <FieldRef Name="Status" /> 
      <FieldRef Name="Priority" /> 
      <FieldRef Name="DueDate" /> 
      <FieldRef Name="PercentComplete" /> 
      <FieldRef Name="Predecessors" /> 
      <FieldRef Name="Comments" /> 
     </ViewFields> 
     <ViewData> 
      <FieldRef Name="StartDate" Type="GanttStartDate"/> 
      <FieldRef Name="DueDate" Type="GanttEndDate"/> 
      <FieldRef Name="Title" Type="GanttTitle"/> 
      <FieldRef Name="PercentComplete" Type="GanttPercentComplete"/> 
      <FieldRef Name="Predecessors" Type="GanttPredecessors"/> 
     </ViewData> 
     <ParameterBindings> 
      <ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" /> 
      <ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" /> 
     </ParameterBindings> 
     <Query> 
      <OrderBy> 
      <FieldRef Name="Title"></FieldRef> 
      </OrderBy> 
     </Query> 
     </View> 

请注意,BaseViewID应该是唯一的范围内,我不使用ContentTypeID。 计算和计算的字段doenot在这里工作,所以你应该创建新的简单的文本字段,并在事件接收器中填充它们。

相关问题