将甘特图视图添加到XML中的自定义列表模板。 <viewdata>未部署</viewdata>

时间:2012-06-18 09:16:11

标签: sharepoint sharepoint-2010

在Sharpoint 2010项目中,我有一个自定义内容类型,它继承了标准的Task内容类型,以及一个自定义列表模板,包含这种内容类型的项目(一切都是用XML和代码完成的,而不是'点击过的“)。

我想在我的列表中添加一个甘特图。我可以使用网络界面,但我想在代码中。所以我手动完成了它,打开了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 个答案:

答案 0 :(得分: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。 计算和计算字段也在这里工作,因此您应该创建新的简单文本字段并在事件接收器中填充它们。