2013-01-02 83 views
1

我有一個非常疏遠的錯誤,在我的SharePoint一個農場當我打電話SPUtility.CreateNewDiscussionReply(),它創建充滿答覆的值,但與討論內容類型的新項目。但是,如果我從網上回復,它會正確創建討論回覆項目。SPUtility.CreateNewDiscussionReply創建一個討論議題

更新:

調試越深我發現SPUtility.CreateNewDiscussionReply()設置項的contentType爲 「消息」,但不是ContentTypeId。添加項目時SharePoint有一些問題可以找到消息內容類型,並使用列表中找到的第一個內容類型來解決。

這是我用來測試這個問題的代碼:

SPList list = web.Lists["Discussions"]; 
SPListItem discussion = list.GetItemById(11); 

SPListItem reply = SPUtility.CreateNewDiscussionReply(discussion); 
// At this point: 
// reply["ContentType"] = "Message" 
// reply["ContentTypeId"] = "" 

reply["Body"] = "This is a test reply"; 

reply.Update(); 
// At this point: 
// reply["ContentType"] = "Message" 
// reply["ContentTypeId"] = "0x012002...." (Discussion content type) 

解決方法: 我發現,如果我設置的答覆的內容類型ID手動之前更新所有項目正常工作:

reply["ContentTypeId"] = list.ContentTypes.BestMatch(SPBuiltInContentTypes.Message); 
+0

但什麼是SPBuiltInContentTypes? (編輯:我看到SP2010中有SPBuiltInContentTypeId類,也許這就是應該在那裏) –

回答

0

的討論內容類型當作一個文件夾(文件夾繼承的內容類型),所以你必須回覆添加到帖子中的文件夾。

+0

在DiscussionPanel列表中,所有項目(討論和消息)都在根文件夾中創建。 –

+0

每個討論內容類型都可以視爲一個文件夾。因此,您可以在討論文件夾中創建回覆項目。 –