SharePoint - Tính năng \ Bộ nhận sự kiện

Trong chương này, chúng ta sẽ học thêm code handle. Xử lý mã là các sự kiện được đưa ra khi một Tính năng được kích hoạt hoặc hủy kích hoạt. Nói cách khác, chúng tôi sẽ kiểm traFeature Receivers.

Dự án Visual Studio mà chúng tôi đã tạo trong chương trước có một Tính năng và khi nó được kích hoạt, nó cung cấp danh sách Liên hệ, Trang web của chúng tôi và liên kết đến Trang web.

Tuy nhiên, khi Tính năng bị vô hiệu hóa, SharePoint chỉ xóa liên kết, Trang web và danh sách Liên hệ vẫn còn.

Chúng tôi có thể viết mã khi Tính năng ngừng hoạt động để xóa danh sách và trang, nếu chúng tôi muốn. Trong chương này, chúng ta sẽ tìm hiểu cách xóa nội dung và phần tử khi một Tính năng bị hủy kích hoạt.

Để xử lý các sự kiện cho một Tính năng, chúng tôi cần Feature Receiver.

Step 1 - Để nhận Bộ thu Tính năng, nhấp chuột phải vào Tính năng trong Trình khám phá Giải pháp và sau đó chọn Add Event Receiver.

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should not be modified.
   /// </remarks>
   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
  
   public class SampleEventReceiver : SPFeatureReceiver {
      // Uncomment the method below to handle the event raised after a feature has been activated.
      //public override void FeatureActivated(SPFeatureReceiverProperties properties)//{
         //
      }
      // Uncomment the method below to handle the event raised before a feature is deactivated.
      //public override void FeatureDeactivating(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised after a feature has been installed.
      //public override void FeatureInstalled(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised before a feature is uninstalled.
      //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised when a feature is upgrading.
      //public override void FeatureUpgrading(SPFeatureReceiverProperties
         properties, string upgradeActionName,
         System.Collections.Generic.IDictionary<string, string> parameters) // {
         //
      }
   }
}

Bạn có thể thấy những gì chúng tôi nhận được là một lớp kế thừa từ SPFeatureReceiver.

Trong SharePoint, có các lớp khác nhau cho các loại sự kiện khác nhau mà bạn có thể xử lý. Ví dụ: sự kiện trên danh sách, sự kiện trên mục danh sách, sự kiện trên trang web. Bạn có thể tạo một lớp có nguồn gốc từ một bộ nhận sự kiện cụ thể và sau đó bạn có thể ghi đè các phương thức bên trong lớp đó để xử lý các sự kiện.

Sự kiện của một Tính năng được sử dụng khi -

  • Activated
  • Deactivated
  • Installed
  • Uninstalled
  • Upgrading

Tiếp theo, bạn cần đính kèm lớp đó làm trình xử lý sự kiện cho mục cụ thể. Ví dụ: nếu có một trình xử lý sự kiện xử lý các sự kiện danh sách, bạn cần đính kèm lớp đó vào danh sách.

Do đó, chúng tôi sẽ xử lý hai Tính năng -

  • Khi tính năng được kích hoạt và

  • Khi nó đang được ngừng hoạt động.

Step 2 - Chúng tôi sẽ thực hiện FeatureActivated và FeatureDeactiised các phương thức như hình dưới đây -

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should
         not be modified.
   /// </remarks>

   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
   public class SampleEventReceiver : SPFeatureReceiver {
      private const string listName = "Announcements";
      
      public override void FeatureActivated(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list != null) return;
         var listId = web.Lists.Add(listName, string.Empty,
         SPListTemplateType.Announcements);
         list = web.Lists[listId];
         list.OnQuickLaunch = true;
         list.Update();
      }
      public override void FeatureDeactivating(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list == null) return;
         if (list.ItemCount == 0) {
            list.Delete();
         }
      }
   }
}

Note -

  • Khi tính năng được kích hoạt, chúng tôi sẽ tạo danh sách Thông báo.

  • Khi tính năng bị vô hiệu hóa, chúng tôi sẽ kiểm tra xem danh sách Thông báo có trống không và nếu có, chúng tôi sẽ xóa nó.

Step 3- Bây giờ nhấp chuột phải vào Dự án và chọn triển khai. Bạn sẽ thấy cảnh báo Xung đột Triển khai sau đây.

Visual Studio cho chúng tôi biết rằng chúng tôi đang cố gắng tạo một danh sách được gọi là danh bạ, nhưng đã có một danh sách trong trang web được gọi là Danh bạ. Nó hỏi chúng tôi nếu chúng tôi muốn ghi đè danh sách hiện có và trong trường hợp này, hãy nhấp vàoResolve.

Step 4 - Quay lại SharePoint, sau đó làm mới trang web của bạn và truy cập Site Actions → Site settings → Manage site features → Sample feature.

Bạn có thể thấy rằng không có danh sách thông báo trong ngăn bên trái.

Step 5 - Hãy để chúng tôi Kích hoạt tính năng Mẫu và bạn sẽ thấy danh sách Thông báo, nhưng hiện tại nó đang trống.

Note - Nếu bạn hủy kích hoạt Tính năng mẫu thì bạn sẽ nhận thấy rằng danh sách Thông báo biến mất.

Step 6- Hãy để chúng tôi kích hoạt lại tính năng. Đi tới Thông báo và sau đó Thêm thông báo mới. Chúng tôi sẽ gọi đây là Kiểm tra và sau đó nhấp vào Lưu.

Bạn sẽ thấy tệp Kiểm tra trong Thông báo.

Bây giờ khi bạn Hủy kích hoạt Thông báo, bạn sẽ thấy rằng danh sách Thông báo vẫn ở lại vì nó không trống.