添加WebPart要在部署时查看页面
-
10-12-2019 - |
题
我有一个列表,它有两个视图(列表和一个日历视图),它正在激活包含ListDefinition的Schema.xml中的日历中的下视图定义的功能时创建。
<View BaseViewID="1" Type="CALENDAR" DisplayName="All appointments" WebPartZoneID="Main" MobileView="TRUE" Scope="Recursive" SetupPath="pages\viewpage.aspx" Url="AllAppointmentsCalendar.aspx" ImageUrl="/_layouts/images/generic.png">
<ViewFields>
<FieldRef Name="StartDate"/>
<FieldRef Name="EndDate"/>
<FieldRef Name="Title"/>
</ViewFields>
<ViewData>
<FieldRef Name="DisplayText" Type="CalendarMonthTitle"/>
<FieldRef Name="DisplayText" Type="CalendarWeekTitle"/>
<FieldRef Name="" Type="CalendarWeekLocation"/>
<FieldRef Name="DisplayText" Type="CalendarDayTitle"/>
<FieldRef Name="" Type="CalendarDayLocation"/>
</ViewData>
<Query>
<Where>
<DateRangesOverlap>
<FieldRef Name="StartDate"/>
<FieldRef Name="EndDate"/>
<Value Type="DateTime">
<Month/>
</Value>
</DateRangesOverlap>
</Where>
</Query>
<RowLimit>500</RowLimit>
<Toolbar Type="Standard"/>
<XslLink>main.xsl</XslLink>
</View>
.
创建此视图将创建一个包含url /lists/appointments/allappointsscalendar.aspx 的日历的页面
要求:将另一个webpart添加到视图创建的页面。 要添加此额外的WebPart我附加了一个SpFeatureCeiver,并希望在FeatureaCtivated方法中使用WebPartManager添加它。
问题:如何获取在创建视图时创建的页面的实例,以便能够使用它来获取webpartmanager.getCurrentWebPartManager(页面)?
还是另外,更好的方法?
解决方案
Going to answer my own question. Knowing the page URL, I've been able to retrieve the (limited) web part manager through the SPWeb:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
try
{
string relativePageUrl = string.Format("Lists/{0}/AllAppointmentsCalendar.aspx",
ElBusConstants.LIST_NAME_APPOINTMENTS);
SPLimitedWebPartManager limitedWebPartManager =
((SPWeb) properties.Feature.Parent).GetLimitedWebPartManager(relativePageUrl,
PersonalizationScope.Shared);
if (limitedWebPartManager != null)
{
limitedWebPartManager.AddWebPart(new ApplyFontTagsWebPart(), "Top", 0);
}
}
catch (Exception ex)
{
string message = "Failed to add web part.";
SPDiagnosticsService.Local.WriteTrace(0,
new SPDiagnosticsCategory(typeof (ElBusHelper).FullName,
TraceSeverity.Unexpected,
EventSeverity.Warning),
TraceSeverity.Unexpected, message, ex);
}
}