我有共享点列表我添加了一个列" DistributionId"作为单行文本。我在调试时可以在fieldvalues中看到它。我可以看到它由行listItem.FieldValues [" DistributionId"] =" test&#34 ;;设置。但是,这不会在SharePoint中更新,并在下面触发执行查询时还原为空值。直接检查时,SharePoint中也未设置值。知道我做错了吗?
using (ClientContext clientContext = new ClientContext(SpEndPointUri))
{
Site site = clientContext.Site;
Web web = clientContext.Web;
List list = clientContext.Web.Lists.GetByTitle(library);
CamlQuery query = new CamlQuery();
query.ViewXml = @"<View><Query><Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>" + documentId + @"</Value></Eq></Where></Query></View>";
ListItemCollection items = list.GetItems(query);
// Retrieve all items in the ListItemCollection from List.GetItems(Query).
clientContext.Load(items, ic => ic.Include(i => i, i => i["DisplayName"], i => i["Id"], i => i["HasUniqueRoleAssignments"]));
clientContext.ExecuteQuery();
ListItem listItem = items[0];
clientContext.Load(listItem);
clientContext.ExecuteQuery();
listItem.FieldValues["DistributionId"] = "test";
listItem.Update();
clientContext.ExecuteQuery();
clientContext.Load(listItem);
clientContext.ExecuteQuery();
}
答案 0 :(得分:0)
使用ListItem.Item property来设置字段值。 ListItem.FieldValues property仅用于获取包含列表项字段名称和值的键/值对的集合。
如何更新ListItem字段值:
var list = ctx.Web.Lists.GetByTitle(listTitle);
var listItem = list.GetItemById(listItemId);
listItem[fieldName] = fieldValue;
listItem.Update();
ctx.ExecuteQuery();