我想從一個網站集複製SPListItem(與文件)到另一個網站集。我這樣做是通過創建類似這樣的文件:通過實用方法在SPListItem中設置作者字段將不會持續
var archiveFile = newsArchive.Lists[listName].RootFolder.Files.Add(originalItem.File.Name, originalItem.File.OpenBinary());
var archiveItem = archiveFile.Item;
我寫的話,我設置新項目的所有字段值與原項目對應像這樣
Utilities.PopulateListItemMetadata(....)
事情是,這不會持續作者字段。
我想明確地設定作者字段在各方面都可以想象,比如像這樣:
string userName = originalItem.GetUser("Created by").LoginName;
SPUser user = newsArchive.SiteUsers[userName];
archiveItem["Author"] = user.ID + ";#" + user.LoginName;
archiveItem.Update();
而像這樣
string userName = originalItem.GetUser("Created by").LoginName;
SPUser user = newsArchive.SiteUsers[userName];
archiveItem["Author"] = user;
archiveItem.Update();
但只要SPListItem.Update()方法稱爲,archiveItem [「Author」]字段已恢復到Sharepoint \ system。我在這裏有點茫然,這應該工作..
P.S. SPListItem.GetUser方法是擴展方法
P.P.S.代碼正在從計時器作業運行...
編輯:做了一些更多的挖掘,通過向內容類型添加新字段,然後設置該字段以反映原始作品的作者,但未設置無論是。但是,web.EnsureUser(用戶名)確實會返回正確的用戶。這是奇怪還是什麼!?!
已經檢查出來,嘗試SystemUpdate和更新,它仍然恢復到sytemaccount ... – Colin 2009-06-26 08:26:40
請參閱編輯,否則我不確定! – 2009-06-26 08:34:19