안녕하세요. 김도명입니다.

이번 포스팅에서는 SharePoint의 Event Receiver (이벤트 리시버)중 리스트에 저장된 항목인 List Item에 관련된 이벤트 리시버에 관해 알아보도록 하겠습니다.
리스트의 아이템에 어떤 이벤트(문서 추가, 변경, 삭제, 첨부파일 추가 등등)가 일어나는 순간을 가져와 해당 이벤트에서 동작할 작업을 정의할 수 있게 해주는 것이 이벤트 리시버입니다.

우선 리스트 항목의 이벤트 리시버 종류는 다음과 같습니다.

//아이템 추가, 수정, 삭제 관련
ItemAdded
ItemAdding
ItemUpdated
ItemUpdating
ItemDeleted
ItemDeleting

//파일 관련
ItemAttachmentAdded
ItemAttachmentAdding
ItemAttachmentDeleted
ItemAttachmentDeleting
ItemFileConverted
ItemFileMoved
ItemFileMoving

//체크인 체크아웃 관련
ItemCheckedIn
ItemCheckedOut
ItemCheckingIn
ItemCheckingOut
ItemUncheckedOut
ItemUncheckingOut

위에서 보시듯이 리스트에 저장된 아이템의 각종 이벤트 순간이 정의되어있습니다.
개발자는 원하는 이벤트를 찾아 해당 이벤트가 발생할 때 원하는 코드를 추가할 수 있습니다.

아래 예시는 아이템이 리스트에 추가되고 난 뒤 아이템의 권한을 변경해 주는 코드입니다.
SPItemEventReceiver 클래스를 상속받은 커스텀 이벤트 리시버를 만들고, ItemAdded라는 이벤트를 override하여 기본 ItemAdded 이벤트가 실행되고 난 뒤 별도로 추가한 updateitemPermission 이라는 함수가 수행되게 한 것입니다.


SPItemEventProperties properties를 이용하여 이벤트가 수행되는 항목을 코드 내에서 가져오거나 (예 : SPListItem oItem = properties.ListItem;) 해당 이벤트의 여러 속성을 가져오고, 변경할 수 있습니다.

커스텀 이벤트 리시버를 개발하여 SharePoint List에 적용시키는 순서는 일반적으로 아래와 같습니다.
1. SPItemEventReceiver 클래스를 상속받은 커스텀 이벤트 리시버를 만든다.
2. 이벤트 리시버 내에서 원하는 이벤트(override 할)를 찾아 수정.
3. Feature를 통해 SharePoint에 해당 이벤트 리시버가 추가 되도록 설정.
4. SharePoint에 배포.
5. 이벤트 리시버가 동작하길 원하는 리스트가 속한 사이트에서 해당 피쳐를 활성화.

아래는 이벤트 별 사용 예제입니다.(출처 : http://msdn.microsoft.com/en-us/library/ms437502.aspx)

//항목이 삭제될 때 삭제를 취소시키고, 메세지를 띄웁니다.
public override void ItemDeleting(SPItemEventProperties properties)
{
    properties.Cancel = true;
    properties.ErrorMessage = "Deleting is not supported.";
}

//리스트에 항목이 추가되고 난 후, 해당 항목의 본문(Body 필드)을 특정 메세지로 바꾸고 업데이트 합니다.
public
override void ItemAdded(SPItemEventProperties properties)
{
    SPListItem oItem = properties.ListItem;
    oItem["Body"] = "Body text maintained by the system.";
    oItem.Update();
}


감사합니다.
신고
Posted by kdmsong

BLOG main image
http://SharePointSchool.net by kdmsong

분류 전체보기 (262)
SharePoint 2013 (1)
SharePoint 2010 (224)
MOSS 2007 (3)
SharePoint 세미나 (9)
Windows Azure (7)
IIS 6.0 ~ 8.0 (8)
개발자 기본 소양 (10)
Etc. (0)
Total : 380,700
Today : 54 Yesterday : 306
Statistics Graph

free counters