Pregunta

Tengo una lista que tiene dos vistas (una lista y una vista de calendario), que se están creando al activar una función que contiene la siguiente definición de vista para el calendario en el Schema.xml de la lista de 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>

Creación de esta vista creará una página que contenga el calendario en la URL / Listas/ApPointMents/AlLPPointMentsCalendar.aspx

Requisito : Agregue una página web adicional a la página creada por la vista.

Para agregar este webpart adicional, he adjuntado un SPFeatureCeiver y quería agregarlo con la webpartManager en el método Featurseactivated.

Pregunta : ¿Cómo puedo obtener la instancia de System.web.ui.page de la página creada durante la creación de la vista para poder usarla para obtener la webPartManager con WebPartManager.getCurrentWebPartManager (Página)?

¿O hay otro enfoque mejor?

¿Fue útil?

Solución

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);
        }
    }
Licenciado bajo: CC-BY-SA con atribución
scroll top