Sto tentando di aggiornare il campo "ModifiedBy" in un forum di discussione di SharePoint utilizzando il modello a oggetti client. Modificando i campi "Editor" e "Autore", posso modificare "ModifiedBy" che appare nella visualizzazione elenco. Tuttavia, dopo aver fatto clic su un post di discussione, il campo "ModifiedBy" che appare lì (quello con l'immagine sopra di esso) non riflette le modifiche. Dopo aver sperimentato, ho scoperto che il campo che ho bisogno di cambiare per correggerlo si chiama "MyEditor". Sfortunatamente, questo campo è di sola lettura.Impostazione modello oggetto client Sharepoint Campo ModifiedBy
Nel codice seguente, provo a modificare le impostazioni di sola lettura del campo su false. Quando guardo il campo MyEditor nel debugger di Visual Studio dopo la riga ExecuteQuery() nella parte inferiore del primo blocco, mostra che il valore ReadOnlyField è stato effettivamente impostato su 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();
Il codice sopra viene eseguito senza problemi. Il problema viene con questo blocco successivo:
//...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();
Quando il codice raggiunge l'ExecuteQuery() nella parte inferiore del secondo blocco, getta un ServerException con il seguente messaggio:
Invalid data has been used to update the list item.
The field you are trying to update may be read only.
Per assicurarsi che il campo MyEditor era quello che faceva gettare l'eccezione, ho commentato la riga in cui l'ho impostata e ho eseguito di nuovo il codice. Tutto ha funzionato bene. Non capisco cosa c'è che non va, qualcuno può aiutarmi?
perché pensi che dovrebbe essere possibile (e perché avresti bisogno che ai fini normali)? Non mi aspetto che questo tipo di campi sia modificabile ... Se si utilizza un account non amministratore per farlo e si riesce a modificare questi campi mi sembra un bug. –
Credo che dovrebbe essere possibile perché sembra ragionevole che, impostando la proprietà ReadOnly di un campo su false, dovrei scrivere su di esso. In caso contrario, a cosa serve il campo ReadOnly? Sto migrando i dati per un forum di discussione da un altro database in Sharepoint, e voglio che il campo ModifiedBy rifletta la persona che l'ha pubblicata originariamente (al momento, mostra invece il mio nome). Il mio account ha diritti amministrativi completi. –