2010-04-13 2 views
0

사용자 지정 목록 마스터가 포함 된 사이트가 있습니다. 이 목록의 사본을 포함하는 여러 하위 사이트가 있습니다. 누군가가 편집하거나 마스터 목록에 새 목록 항목을 추가 할 때 모든 하위 사이트가 마스터 목록과 연결된 이벤트 처리기에 따라 적절하게 업데이트되기를 바랍니다.목록 마스터 목록에서 하위 사이트로 복사

예컨대 항목이 추가되는 경우, 각 하위 사이트의 목록에 추가

항목이 업데이트되는 경우, 각 하위 사이트의 해당 목록 항목을 업데이트

항목이 삭제 된 경우, 각각의 서브 사이트에서 해당 목록 항목을 삭제

SPListItem.Copy 메서드를 사용하고 listItem의 CopyTo 메서드를 사용하지 않으려 고 시도했습니다. 이런 종류의 기법을 수행하는 가장 좋은 방법은 무엇입니까?

답변

1

SPListItem.Copy 및 SPListItem.CopyTo는 대상 목록이 원본 항목과 동일한 SPWeb에있는 경우에만 작동합니다. 이 목록 항목에는 다른 목록 항목과 구분할 수있는 "ID"필드가 있지만 모든 하위 사이트와 최상위 사이트에서 항상 동일한 것으로 가정합니다 (ID와는 달리 100 귀하의 통제하에있는 %). 제목 일 수도 있고 프로그래밍 방식으로 할당 된 숫자 일 수도 있습니다. 나는 이것을 "신원"필드라고 부를 것입니다.

이벤트 처리기를 알고 있다고 가정합니다. 그렇지 않다면 모든 핵심 개념을 설명하는 매우 기본적인 예제 here을 볼 수 있습니다.

삭제하는 것이 가장 쉬운 방법입니다. 하위 항목을 반복하면서 올바른 "ID"필드가있는 항목의 마스터 목록을 반복하고 SPListItem.Delete()를 호출하십시오. 그것은 ItemDeleting 이벤트를 넣기에 충분해야합니다.

추가하는 것이 약간 더 어렵습니다. 다시 한 번 하위 사이트를 반복하지만 이번에는 다음과 같은 방법을 사용하십시오.

SPListItem target = list.Items.Add(); 
target["Title"] = properties.AfterProperties["Title"]; 
//Repeat similar assignments for all fields in the list item which can be assigned during creation. 
target.Update(); 

당신이 이미 포함되지 않은 경우 변경 될 수있는 모든 필드뿐만 아니라 "정체성"필드를 포함하도록 수정해야합니다. 자동으로 할당되는 항목에 대해서는 걱정할 필요가 없습니다. Copy/CopyTo가 작동하면 SharePoint에서 처리 할 수 ​​있습니다. ItemAdded 이벤트에 넣으십시오.

마지막으로 항목을 업데이트하는 것은 list.Items.Add()를 호출하는 대신 항목을 추가하는 것과 매우 유사하지만 마스터 목록을 반복하여 올바른 항목을 얻고 올바른 "ID " 들. ItemUpdated 이벤트에 넣으십시오.

마스터 목록에 대한 하위 사이트의 사용 권한이 최상위 수준 사이트에서와 동일한 지 확인하십시오. 희망이 당신을 위해 작동합니다!

+0

감사합니다. 훌륭한 답변입니다. – Graeme

0

조회 열로 사용할 마스터 목록 인 경우 루트 사이트에서 목록을 만든 다음 사이트 열을 가리킬 수 있습니다. 그런 다음 해당 사이트 열을 모든 하위 사이트 목록에서 사용할 수 있습니다.

+0

조금 더 설명 할 수 있습니까? – mandroid

관련 문제