Добавить WebPart для просмотра страницы на развертывании
-
10-12-2019 - |
Вопрос
У меня есть список, который получил два взгляда (список и представление календаря), которые создаются при активации функции, содержащей следующее определение просмотра для календаря в Schema.xml от listDefinition.
<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/appointents/allappointentscalendar.aspx
Чтобы добавить эту дополнительную веб-панель, которую я приложил SPFeatureCeiver и хотел добавить его с WebPartManager в методе FeutureActived.
или есть другой, лучший подход?
Решение
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);
}
}