gpt4 book ai didi

sharepoint - 在 SPListItem 中设置作者字段不会持续存在

转载 作者:行者123 更新时间:2023-12-03 19:12:10 26 4
gpt4 key购买 nike

我正在尝试将 SPListItem(带文件)从一个网站集复制到另一个网站集。我通过创建这样的文件来做到这一点:

var archiveFile = newsArchive.Lists[listName].RootFolder.Files.Add(originalItem.File.Name, originalItem.File.OpenBinary());
var archiveItem = archiveFile.Item;

通过我编写的实用程序方法,我然后将新项目的所有字段值设置为与原始项目相对应

Utilities.PopulateListItemMetadata(....)

问题是,这不会保留 Author 字段。

我尝试以各种可以想象的方式明确设置 Author 字段,例如:

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。我在这里有点不知所措,这应该可行..

附言 SPListItem.GetUser 方法是一种扩展方法

P.P.S. 代码正在从计时器作业中运行...

编辑:通过向内容类型添加一个新字段然后设置该字段以反射(reflect)原始项目的作者进行了更多挖掘,但也没有设置。但是,web.EnsureUser(username) 确实返回了正确的用户。这是奇怪还是什么!?!

最佳答案

找到答案,使用

SPFieldUserValue val = new SPFieldUserValue(newsArchive, user.ID, user.Name);
archiveItem["Author"] = val;
archiveItem.SystemUpdate(false);

成功了!

关于sharepoint - 在 SPListItem 中设置作者字段不会持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1047929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com