gpt4 book ai didi

c# - Sharepoint 客户端对象模型设置 ModifiedBy 字段

转载 作者:太空狗 更新时间:2023-10-29 23:25:00 25 4
gpt4 key购买 nike

我正在尝试使用客户端对象模型更新 Sharepoint 讨论区中的“ModifiedBy”字段。通过更改“Editor”和“Author”字段,我可以更改出现在 ListView 中的“ModifiedBy”。但是,一旦您单击讨论帖子,出现在那里的“ModifiedBy”字段(上面有图片的那个)不会反射(reflect)更改。经过试验,我发现我需要更改以更正此字段的字段称为“MyEditor”。不幸的是,该字段是只读的。

在下面的代码中,我尝试将字段的只读设置更改为 false。当我在第一个 block 底部的 ExecuteQuery() 行之后查看 Visual Studio 调试器中的 MyEditor 字段时,它表明 ReadOnlyField 值实际上已设置为 false。

        sharepointContext.Load(discussionList);
sharepointContext.ExecuteQuery();
var fields = discussionList.Fields;
sharepointContext.Load(fields);
sharepointContext.ExecuteQuery();
var field = fields.GetByInternalNameOrTitle("MyEditor");
field.ReadOnlyField = false;
field.Update();
sharepointContext.Load(field);
sharepointContext.ExecuteQuery();

上面的代码执行没有问题。问题来自下一个 block :

        //...Code to initialize discussionItem...
discussionItem["MyEditor"] = 0;
discussionItem["Editor"] = 0;
discussionItem["Author"] = 0;
discussionItem["Body"] = "Testing";
discussionItem["Title"] = "Hello Worlds";
discussionItem.Update();
sharepointContext.Load(discussionItem);
sharepointContext.ExecuteQuery();

当代码到达第二个 block 底部的 ExecuteQuery() 时,它会抛出带有以下消息的 ServerException:

        Invalid data has been used to update the list item. 
The field you are trying to update may be read only.

为确保 MyEditor 字段是引发异常的原因,我注释掉了设置它的行并再次运行代码。一切正常。我不明白哪里出了问题,有人可以帮助我吗?

最佳答案

如果有人需要通过名字找到用户,它是这样的:

    private static FieldUserValue GetUser(ClientContext clientContext, string userName)
{
var userValue = new FieldUserValue();
var newUser = clientContext.Web.EnsureUser(userName);
clientContext.Load(newUser);
clientContext.ExecuteQuery();
userValue.LookupId = newUser.Id;
return userValue;
}

返回值可以通过item["Author"]设置

关于c# - Sharepoint 客户端对象模型设置 ModifiedBy 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460431/

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