2011-07-27 3 views
0

이벤트 처리기를 프로그래밍하기 시작했습니다. 처음에는 하드 코딩 된 값이있는 목록에 일부 항목을 추가했습니다. 모든 것이 잘 작동했지만 properties.OpenWeb()을 사용하여 URL을 얻으려고 시도했는데 web.Url.ToString() - 처리기가 작동하지 않고 오류가 발생하지 않았습니다.Sharepoint - 추가 된 이벤트 처리기 속성이 작동하지 않습니다.

구성을 변경해야합니까? 내 문제를 해결할 방법이 있습니까?

그런데 값을 가져 오려고하면 모두 null입니다.

WSS 3.0 및 VS 2008을 사용하고 있습니다. 아래 코드를 참조하십시오. 감사합니다.

public override void ItemAdded(SPItemEventProperties properties) 
    { 
     SPSite site = new SPSite("http://air_sim:1431/"); 
     SPWeb web = site.RootWeb; 
     SPList List = web.Lists["Announcements"]; 

     base.ItemAdded(properties); 

     SPWeb web1 = properties.OpenWeb(); 

     SPListItem newitem = List.Items.Add(); 

     newitem["Title"] = "test"; 
     newitem["Body"] = web1.Url.ToString(); 

     newitem.Update(); 

    } 

나는이 코드를 msdn에서 발견했습니다. 작동하지 않습니다. 아무런 오류도없고, 조건도 사실입니다.

public override void ItemAdding(SPItemEventProperties properties) 
    { 
     using(SPWeb oWebsite = new SPSite(properties.SiteId).OpenWeb(properties.RelativeWebUrl)) 
     { 
      SPListItemCollection collItems = oWebsite.Lists[properties.ListTitle].Items; 

      if (collItems.Count >1) 
      { 
       properties.Cancel = true; 
       properties.ErrorMessage = "Adding items to this list is not supported because it already contains " + 
        collItems.Count.ToString() + " items."; 
      } 
     } 
    } 
+0

오류가 없음을 어떻게 알 수 있습니까? 로그를 보셨습니까? ItemAdded 핸들러는 실패 할 경우 브라우저에 오류 메시지를 생성하지 않습니다. –

+0

추가 이벤트 처리기에서 값을 업데이트하지 말고 추가를 사용하여 원래 코드를 게시하십시오. ... –

+0

처음에 힌트를 주셨습니다. 로그 파일은 어디서 구할 수 있습니까? Common Files/Microsoft Shared/web server extensions/12를 살펴 보았지만 튜토리얼에 설명 된 로그 파일은 없습니다. – Fabian

답변

0

은 다음과 같이 Elements.xml에서 "수신기"의 그 "종류"의 확인하십시오

<Type>ItemAdded</Type> 

당신의 "수신기"노드는해야 뭔가 같은 :

<Receiver> 
    <Name>ERItemAdded</Name> 
    <Type>ItemAdded</Type> 
    <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly> 
    <Class>NameSpace.ClassName</Class> 
    <SequenceNumber>10000</SequenceNumber> 
</Receiver> 
관련 문제