在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中手动添加此标记,然后视图神奇地开始工作。但是,由于某种原因,标记不会与视图的其余部分一起部署。
有关如何部署代码的任何建议吗?
答案 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。 计算和计算字段也在这里工作,因此您应该创建新的简单文本字段并在事件接收器中填充它们。