我正在尝试使用客户端对象模型创建一个sharepoint日历事件。我可以创建项目并设置列值除了"结束日期"列之外的所有列。当我尝试设置此列时,我收到以下错误。德语消息的翻译为"更新列表项时使用了无效数据。您要更新的字段可能是写保护的。"如果跳过此列,则在Sharepoint服务器上创建的列表项没有enddate属性,但在日历视图中不可见。我可以在"数据表视图"类型的视图中看到项目,如果我从这里设置结束日期,它也可以在日历视图中看到。(奇怪的是它是必填字段)
Server Exception Microsoft.SharePoint.Client.ServerException was unhandled. Message=Es wurden ungültige Daten zur Aktualisierung des Listeneintrags verwendet. Das Feld, das Sie aktualisieren möchten, ist möglicherweise schreibgeschützt. Source=Microsoft.SharePoint.Client.Runtime ServerErrorCode=-2147024809 ServerErrorTypeName=System.ArgumentException ServerStackTrace="" StackTrace:
at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream)
at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()
at Microsoft.SharePoint.Client.ClientRequest.ExecuteQueryToServer(ChunkStringBuilder sb)
at Microsoft.SharePoint.Client.ClientRequest.ExecuteQuery()
at Microsoft.SharePoint.Client.ClientRuntimeContext.ExecuteQuery()
at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
at Sp_Ctx.Program.Main(String[] args) in_CtxProgram.cs:line 129 InnerException:
我的代码如下
using (ClientContext ctx = ClaimClientContext.GetAuthenticatedContext(targetSite)){ if (ctx != null) {
ctx.Load(ctx.Web); // Query for Web
ctx.ExecuteQuery(); // Execute
Console.WriteLine(ctx.Web.Title);
List list = ctx.Web.Lists.GetByTitle("calendarListName");
ctx.Load(list.Fields);
ctx.ExecuteQuery();
var newItem = list.AddItem(listItemCreationInfo);
newItem.Update();
newItem["Title"] = "myCalendar" .....
newItem["EventDate"]= DateTime.Now;
newItem["EndDate"]= DateTime.Now.AddMinutes(30);
newItem["Location"]= "Office";
newItem.Update();
ctx.ExecuteQuery();
}
答案是简单地将事件日期和结束日期一起更新。原始解决方案可以在这里看到