내 사이트 모음에서 소수의 목록에 사용 된 사이트 콘텐츠 형식이 있습니다. 그 콘텐츠 유형에서 ItemAdding 이벤트를 처리 할 이벤트 수신기를 설명합니다. 이것은 잘 작동합니다. 이제 ItemUpdating도 처리 할 수 있도록 컨텐트 유형을 업데이트해야합니다. OTTOMH, 간편한 버전 추적을 허용하는 것처럼 보였으므로 콘텐츠 형식에 대한 XML을 수정하기 만했습니다. 이는 내 업데이트가 사이트 콘텐츠 형식에 적용되었지만이 콘텐츠 형식을 사용하고 있던 목록에는 적용되지 않았다는 점에서 효과가있었습니다. 이것은 많은 것이 예상되었습니다. 설치 이 있고 그 내용 유형을 활성화 한 후 어떠한 경우에도이미 배포 된 SharePoint 콘텐츠 형식을 업데이트하여 추가 항목 이벤트 처리
당신이 콘텐츠 유형에 대한 콘텐츠 형식 정의 파일을 업데이트 한다 : 그럼는 SharePoint SDK가의 grim view 걸리는 것으로 나타났습니다. Windows SharePoint Services는 내용의 변경 내용을 추적하지 않습니다. 형식 정의 파일. 따라서 에는 사이트 콘텐츠 형식에 대한 변경 내용을 자식 콘텐츠 형식 인 으로 푸시 다운 할 수있는 방법이 없습니다.
SDK는 UI 또는 코드를 사용하여 변경 내용을 푸는 방법을 설명하는 몇 개의 섹션을 가리 킵니다. UI는 이벤트 수신기에 훅을 제공하지 않으므로 코드 경로를 선택하게 될 것입니다.
는 내가 같은 것을 할 그냥 콘텐츠 형식의 목록의 사본에 새 이벤트 수신기를 추가 할 수있을 거라고 생각 :
SPList list = web.Lists["My list"];
SPContentType ctype = list.ContentTypes["My content type"];
// Doesn't work -- EventReceivers is null below.
ctype.EventReceivers.Add(SPEventReceiverType.ItemUpdating,
"My assembly name", "My class name");
그러나 캐치 ctype.EventReceivers 여기 널이다 , 비록 내가이 목록에 이미 매달린 ItemAdding을 가지고있다. 그것이 목록 자체로 옮겨진 것 같습니다. 따라서 목록에는 유효한 EventReceivers 컬렉션이 있습니다.
- 단지 목록에 직접 새 이벤트 수신기를 추가하고 내 콘텐츠를 모두 입력에 대해 잊지이 작업을 수행하는 올바른 방법은 다음과 같습니다
SPList list = web.Lists["My list"]; list.EventReceivers.Add(SPEventReceiverType.ItemUpdating, "My assembly name", "My class name");
그래서, 나는 몇 가지 질문이?
- 이 변경을 수행하려면 구성 관리와 관련하여이를 처리하는 가장 좋은 방법은 무엇입니까? 모든 적절한 목록을 찾고 각각을 수정하기 위해 간단한 콘솔 앱을 만들어야합니까? 아니면 어떤면에서 더 나은 옵션을 만드는 것입니까? 어느 쪽이든,이 변화는 독자적으로 진행될 것이고이 컨텐츠 유형으로 작업해야하는 미래의 개발자들에 의해 발견되기 어려울 것 같습니다.
좋은 질문 : 비슷한 것을 묻는 의미였습니다. –