2011-07-27 52 views
0

我已經開始編寫事件處理程序。 起初,我用硬編碼值將一些項目添加到列表中。 一切工作正常,但後來我切換到使用properties.OpenWeb()並試圖獲得與web.Url.ToString()的URL - 這樣的處理程序將無法正常工作,並不會發出任何錯誤。Sharepoint - 項目添加的eventhandler屬性不起作用

我必須更改任何配置嗎? 你有辦法解決我的問題嗎?

順便說一句,如果我嘗試獲取值,它們都是空值。

我正在使用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

您不應在Added事件處理程序中更新值,而應使用添加,發佈原始代碼。 ... –

+0

起初爲您的提示hans。我在哪裏找到日誌文件?我查看了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>