2011-06-02 165 views
2

我爲ItemAdded創建了一個事件處理程序,以便在網站上添加項目時,我的代碼會檢查它是否是文件夾。如果是,它應該將該文件夾的內容類型更改爲自定義內容類型。Sharepoint事件處理程序未觸發

事件沒有發射,所以我想知道如果我是正確的方式和/或在正確的地方。這裏是我的代碼:

public class ItemAddedHandler : SPItemEventReceiver 
{ 
public override void ItemAdded(SPItemEventProperties properties) 
{ 
    base.ItemAdded(properties); 

    SPListItem listItem = properties.ListItem; 
    SPList list = properties.ListItem.ParentList; 
    SPContentType contentType; 

    if (listItem.FileSystemObjectType == SPFileSystemObjectType.Folder && 
     (list.Title == "Apps" || list.Title == "Data" || list.Title == "Public")) 
    { 
     contentType = list.ContentTypes["Custom Folder"]; 

     listItem["Content Type"] = contentType.Name; 
     listItem["Content Type ID"] = contentType.Id.ToString(); 
     listItem.SystemUpdate(); 
    } 
} 
} 

請讓我知道如果我做錯了任何事情來完成這項任務。首先十分感謝。

按照要求,特徵是用下面的方法加入:

  1. 簽名和上述代碼編譯和複製DLL到服務器
  2. 複製DLL到GAC
  3. 創建文件夾:C:\程序Files \ Common Files \ Microsoft Shared \ web server extensions \ 12 \ TEMPLATE \ FEATURES \ SPEventHandler 4.使用Visual Studio生成的GUID創建Feature.xml:

    <?xml version="1.0" encoding="utf-8" ?> 
    <Feature Scope="Web" 
        Title="Added Event Handler" 
        Id="{27C2FDFF-ADA0-4984-955C-6448E182FA88}" 
        xmlns="http://schemas.microsoft.com/sharepoint/"> 
        <ElementManifests> 
        <ElementManifest Location="Elements.xml"/> 
        </ElementManifests> 
    </Feature> 
    

5.Created Elements.xml的使用DLL在GAC和ListTemplateID的公鑰對與文檔庫(101)的工作:

<?xml version="1.0" encoding="utf-8" ?> 
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
     <Receivers ListTemplateId="101"> 
     <Receiver> 
      <Name>AddedEventHandler</Name> 
      <Type>ItemAdded</Type> 
      <SequenceNumber>10000</SequenceNumber> 
      <Assembly>SPEventHandler, Version=1.0.0.0, Culture=neutral, 
       PublicKeyToken=f2e7de6c4a924a03</Assembly> 
      <Class>SPEventHandler.ItemAddedHandler</Class> 
      <Data></Data> 
      <Filter></Filter> 
     </Receiver> 
     </Receivers> 
    </Elements> 
  1. 然在服務器上的以下命令:

    stsadm -o installfeature -filename SPEventHandler \ Feature.xml

  2. 在站點(SP 2007)上,站點操作 - >站點設置 - >修改所有站點設置 - >站點功能並激活「添加事件處理程序」

完成這些步驟之後,在本網站的列表中創建一個新項目似乎沒有做任何事情,包括寫入事件日誌,所以我想知道它是否甚至可以運行。

感謝

+1

我知道這是一個編程問題,但可能值得一提的是,您可能會在此處獲得更好的回覆:http://sharepoint.stackexchange.com/ – JonH 2011-06-02 13:33:11

+0

是的,我一直在那裏嘗試。謝謝。 – 2011-06-02 16:04:00

+1

我覺得你的痛苦我已經做了一段時間的分享,沒有足夠的資源或對此有多少了解的人。您可以混合使用管理員,開發人員等。 – JonH 2011-06-02 16:07:24

回答

2

我想通了。在爲項目指定內容類型之前,需要爲文檔庫啓用我的自定義內容類型。感謝大家的迴應。

相關問題