我有一个列表,它有两个视图(列表和一个日历视图),它正在激活包含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);
        }
    }
许可以下: CC-BY-SA归因
scroll top