2

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

我想将甘特图添加到我的列表中。我可以使用 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 中手动添加这个标签,然后视图神奇地开始工作。但是,由于某种原因,该标签并未与视图的其余部分一起部署。

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

4

1 回答 1

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。此外,计算和计算字段在这里不起作用,因此您应该创建新的简单文本字段并将它们填充到事件接收器中。

于 2012-09-11T10:01:35.697 回答