SharePoint - ตัวรับคุณลักษณะ \ เหตุการณ์
ในบทนี้เราจะเรียนรู้ที่จะเพิ่ม code handle. จุดจับโค้ดคือเหตุการณ์ที่เกิดขึ้นเมื่อมีการเปิดใช้งานหรือปิดใช้งานคุณลักษณะ กล่าวอีกนัยหนึ่งเราจะตรวจสอบFeature Receivers.
โครงการ Visual Studio ที่เราสร้างขึ้นในบทสุดท้ายมีคุณลักษณะเดียวและเมื่อเปิดใช้งานจะจัดเตรียมรายชื่อผู้ติดต่อของเรา SitePage และลิงก์ไปยัง SitePage
อย่างไรก็ตามเมื่อปิดใช้งานฟีเจอร์ SharePoint จะเอาลิงก์ออกเท่านั้น SitePage และรายชื่อผู้ติดต่อจะยังคงอยู่
เราสามารถเขียนโค้ดได้เมื่อปิดใช้งานฟีเจอร์เพื่อลบรายการและเพจออกหากเราต้องการ ในบทนี้เราจะเรียนรู้วิธีลบเนื้อหาและองค์ประกอบเมื่อปิดใช้งานคุณลักษณะ
ในการจัดการเหตุการณ์สำหรับฟีเจอร์เราจำเป็นต้องมี Feature Receiver.
Step 1 - ในการรับคุณสมบัติให้คลิกขวาที่คุณลักษณะในโซลูชัน Explorer จากนั้นเลือก 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) // {
//
}
}
}
คุณสามารถดูสิ่งที่เราได้รับคือคลาสที่สืบทอดมา SPFeatureReceiver.
ใน SharePoint มีคลาสที่แตกต่างกันสำหรับกิจกรรมประเภทต่างๆที่คุณสามารถจัดการได้ ตัวอย่างเช่นเหตุการณ์ในรายการเหตุการณ์ในรายการเหตุการณ์บนไซต์ คุณสามารถสร้างคลาสที่ได้มาจากตัวรับเหตุการณ์เฉพาะจากนั้นคุณสามารถแทนที่เมธอดภายในคลาสนั้นเพื่อจัดการกับเหตุการณ์ได้
เหตุการณ์ของคุณสมบัติถูกใช้เมื่อเป็น -
- Activated
- Deactivated
- Installed
- Uninstalled
- Upgrading
ถัดไปคุณต้องแนบคลาสนั้นเป็นตัวจัดการเหตุการณ์สำหรับรายการเฉพาะ ตัวอย่างเช่นหากมีตัวจัดการเหตุการณ์ที่จัดการรายการเหตุการณ์คุณต้องแนบคลาสนั้นเข้ากับรายการ
ดังนั้นเราจะจัดการสองคุณสมบัติ -
เมื่อเปิดใช้งานคุณสมบัติและ
เมื่อกำลังปิดใช้งาน
Step 2 - เราจะใช้ FeatureActivated และเมธอด FeatureDeactivated ดังแสดงด้านล่าง -
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 -
เมื่อเปิดใช้งานคุณสมบัติเราจะสร้างรายการประกาศ
เมื่อคุณลักษณะนี้ถูกปิดใช้งานเราจะตรวจสอบว่ารายการประกาศว่างเปล่าหรือไม่และหากเป็นเช่นนั้นเราจะลบออก
Step 3- คลิกขวาที่โครงการแล้วเลือกปรับใช้ คุณจะเห็นคำเตือนความขัดแย้งในการทำให้ใช้งานได้ดังต่อไปนี้
Visual Studio กำลังแจ้งให้เราทราบว่าเรากำลังพยายามสร้างรายชื่อที่เรียกว่าผู้ติดต่อ แต่มีรายชื่ออยู่ในไซต์ที่เรียกว่าผู้ติดต่อ กำลังถามเราว่าเราต้องการเขียนทับรายการที่มีอยู่หรือไม่และในกรณีนี้ให้คลิกResolve.
Step 4 - กลับไปที่ SharePoint จากนั้นรีเฟรชไซต์ของคุณแล้วไปที่ Site Actions → Site settings → Manage site features → Sample feature.
คุณจะเห็นว่าไม่มีรายการประกาศในบานหน้าต่างด้านซ้าย
Step 5 - ให้เราเปิดใช้งานคุณสมบัติตัวอย่างและคุณจะเห็นรายการประกาศ แต่ตอนนี้ว่างเปล่า
Note - หากคุณปิดใช้งานคุณสมบัติตัวอย่างของคุณคุณจะสังเกตเห็นว่ารายการประกาศหายไป
Step 6- ให้เราเปิดใช้งานคุณสมบัตินี้อีกครั้ง ไปที่ประกาศแล้วเพิ่มประกาศใหม่ เราจะเรียกการทดสอบนี้จากนั้นคลิกบันทึก
คุณจะเห็นไฟล์ทดสอบภายใต้ประกาศ
ตอนนี้เมื่อคุณปิดใช้งานประกาศคุณจะเห็นว่ารายการประกาศยังคงอยู่เนื่องจากไม่ได้ว่างเปล่า