따라서 SharePoint 2010 목록에서 이러한 종류의 기능을 수행하려고합니다.
내 목록에 7 개의 값이있는 유형 선택 필드가 있으며 사용자가 해당 필드의 값을 값 2,3,4,5,6,7에서 값 1로 변경할 수 없도록하고 싶습니다.
해당 목록에 대한 이벤트 수신기를 작성했습니다. 여기에 내 코드가 있습니다.
public override void ItemUpdated(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
string beforeStatus = properties.BeforeProperties["Status"].ToString();
string afterStatus = properties.AfterProperties["Status"].ToString();
if (beforeStatus != "1stValue" && afterStatus == "1stValue")
{
properties.Cancel = true;
properties.ErrorMessage = "This isn't allowed.";
}
}
난 둘 다 사용 해봤 ItemUpdated
그리고 ItemUpdating
나는 그것이 있어야로 이벤트 수신기의 get이 호출 것을 I 톱을 디버깅 할 때, 이벤트 수신기 만 beforeStatus
하고 afterStatus
점점 null
두 경우 모두 항목에서.
그렇다면 올바르게 업데이트하기 전과 후에 항목의 필드 값을 어떻게 얻을 수 있습니까? 미리 감사드립니다!
참고 : 필드의 내부 및 표시 이름은 둘 다 Status
입니다.
ItemUpdating 이벤트를 사용하면 afterproperties에 변경된 값이 포함되고 ListItem에는 필드의 원래 값이 포함됩니다.
여기 에서 각 이벤트에서 사용할 수있는 속성에 대한 정보를 찾을 수 있습니다.
목록 항목을 편집하는 방법도 중요합니다. SharePoint 기본 편집 양식을 통해 모든 열이 afterproperties 컬렉션에 있지만 사용자 지정 코드 (예 : 웹 파트, 이벤트 수신)에서 항목을 편집하는 경우 업데이트 된 열만 해당 컬렉션에 있습니다.
편집 :보기 좋은 오류의 경우 사용자를 사용자 지정 오류 페이지 (생성해야 함)로 리디렉션 할 수 있습니다.
properties.Cancel = true;
properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
properties.RedirectUrl = "/_layouts/MySolution/CustomErrorPage.aspx?Error=" + errorMessage;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다