我正在嘗試使用客戶端對象模型更新Sharepoint討論板中的「ModifiedBy」字段。通過更改「編輯器」和「作者」字段,我可以更改列表視圖上顯示的「ModifiedBy」。但是,一旦您點擊討論帖子,出現在那裏的「ModifiedBy」字段(圖片上方的圖片)就不會反映這些更改。經過試驗後,我發現我需要改變這個字段的名稱叫做「MyEditor」。不幸的是,這個字段是隻讀的。Sharepoint客戶端對象模型設置ModifiedBy字段
在下面的代碼中,我嘗試將該字段的只讀設置更改爲false。當我在第一個塊底部的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();
上面的代碼執行沒有問題。問題就來了與此下一個塊:
//...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();
當代碼到達的executeQuery()在第二塊的底部,它拋出的ServerException使用以下信息:
Invalid data has been used to update the list item.
The field you are trying to update may be read only.
爲了確保MyEditor字段是導致拋出異常的字段,我將其設置並重新運行代碼的行註釋掉了。一切正常。我不明白什麼是錯,有人可以幫助我嗎?
爲什麼你認爲它應該是可能的(爲什麼你會需要一個正常的目的)?我不希望這些類型的字段是可編輯的......如果您使用非管理員帳戶來這樣做並設法更改這些字段,那麼感覺就像是一個bug。 – 2012-07-12 21:10:37
我認爲這應該是可能的,因爲如果我將字段的ReadOnly屬性設置爲false,我應該可以寫入它。如果不是,ReadOnly字段的用途是什麼?我將討論板的數據從不同的數據庫遷移到Sharepoint,並且我希望ModifiedBy字段反映最初發布它的人(因爲現在它顯示了我的名字)。我的帳戶擁有完整的管理權限。 – 2012-07-13 03:21:42