سؤال

لدي قائمة تحتوي على طريقتي عرض (عرض القائمة وعرض التقويم)، والتي يتم إنشاؤها عند تنشيط ميزة تحتوي على تعريف العرض التالي للتقويم في 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/Appointments/AllAppointmentsCalendar.aspx

متطلبات:قم بإضافة جزء ويب إضافي إلى الصفحة التي تم إنشاؤها بواسطة طريقة العرض.

لإضافة جزء WebPart الإضافي هذا، قمت بإرفاق SPFeatureReceiver وأردت إضافته مع WebPartManager في طريقة FeaturesActivated.

سؤال:كيف يمكنني الحصول على مثيل System.Web.UI.Page للصفحة التي تم إنشاؤها أثناء إنشاء طريقة العرض حتى أتمكن من استخدامها للحصول على WebPartManager باستخدام WebPartManager.GetCurrentWebPartManager(page)؟

أم أن هناك نهج آخر أفضل؟

هل كانت مفيدة؟

المحلول

سأجيب على سؤالي الخاصبمعرفة عنوان URL للصفحة، تمكنت من استرداد مدير جزء الويب (المحدود) من خلال 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