Добавить WebPart для просмотра страницы на развертывании

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/91031

Вопрос

У меня есть список, который получил два взгляда (список и представление календаря), которые создаются при активации функции, содержащей следующее определение просмотра для календаря в 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.

Вопрос : Как я могу получить экземпляр System.web.ui.page страницы созданной при создании представления, чтобы иметь возможность использовать его, чтобы получить WebPartManager с WebPartmanager.getCurrentWartwartmanager (Страница)?

или есть другой, лучший подход?

Это было полезно?

Решение

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 с атрибуция
Не связан с sharepoint.stackexchange
scroll top