2012-04-09 7 views
1

Hier wird die vollständigen Fehler „Ungültige Daten des Listeneintrag zu aktualisieren, verwendet worden“:EndDate Aktualisierung verursacht

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

ich ein Kalenderereignis in Sharepoint zu aktualisieren, bin im Grunde versuchen.

Zuerst bekomme ich Folgendes.

ClientContext clientContext = new ClientContext(deptUrl); 
Web web = clientContext.Web; 
List list = web.Lists.GetByTitle(deptCal); 
clientContext.Load(list); 

CamlQuery query = new CamlQuery(); 
query.ViewXml = "<View><Query><Where><IsNull><FieldRef Name='EndDate' /></IsNull></Where></Query><RowLimit>1</RowLimit></View>"; 

ListItemCollection allEventIds = list.GetItems(query); 

clientContext.Load(allEventIds, 
items => items.Include(
    item => item["EventID"], 
    item => item["EventDate"], 
    item => item["EndDate"] 
)); 

clientContext.ExecuteQuery(); 

durch eine Schleife Gefolgt:

foreach (var item in allEventIds) 
{ 
    Console.Write("EventId: {0} StartDate: {1}\n", item.FieldValues["EventID"], item.FieldValues["EventDate"]); 

       if (item.FieldValues.ContainsKey("EventDate")) 
       { 
        object objValue = item.FieldValues["EventDate"]; 
        if (objValue != null) 
        { 
         clientContext.Load(item);       
         DateTime endDate = DateTime.Parse(objValue.ToString()); 
         item["EndDate"] = endDate; //Updated this! 

        } 
       } 
       item.Update(); 

      } 

Dann zuletzt:

clientContext.ExecuteQuery(); 

Wenn ich andere Artikel zu aktualisieren versuchen, [x] in der ListItem gut funktioniert. Wenn ich versuche, das "EndDate" zu aktualisieren. Ich erhalte den folgenden Fehler:

Microsoft.SharePoint.Client.ServerException was unhandled 
    Message="Invalid data has been used to update the list item. The field you are trying to update may be read only." 
    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 DisplayOnCalendarUtility.Program.Main(String[] args) in C:\Projects\DisplayOnCalendarUtility\DisplayOnCalendarUtility\Program.cs:line 61 
     at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 
+1

Wenn das Datum nicht null ist, überprüfen Sie das Format des Datums Sie vorbei und stellen Sie sicher, es ist richtig. Überprüfen Sie außerdem, ob das Datumsfeld tatsächlich vom Datumstyp ist und keine Zeichenfolge. – NoChance

+0

Wäre nicht DateTime.Parse (String) eine gültige Zeichenfolge? Außerdem habe ich überprüft, dass es kein String ist, weil ich versucht habe, einen String-Wert zu speichern. – jmogera

Antwort

7

Sharepoint ist wie folgt verdrahtet. Wenn Sie das EndDate selbst aktualisieren, erhalten Sie einen Fehler, der oben aufgeführt ist. Die Lösung besteht darin, das EventDate und das EndDate zusammen zu aktualisieren.

DateTime startDate = DateTime.Parse(objValue.ToString()); 
item["EventDate"] = startDate; 
item["EndDate"] = startDate; //Or Any other date you want to set to. 

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/31e84d74-3ea8-44df-86dc-2dc62381ab3b/#33ad370b-b137-4c2f-bcaa-d6f5c714f4dd

+0

WoW ... Völlig unerwartete Lösung! – NoChance

+0

Erzähl mir davon. Verrückt! – jmogera