答案很簡單:你不能。系統字段(如Created
,Modified
,Created By
,Modified By
)不支持通過SharePoint Web Services UpdateListItems
操作進行更新。
注:只針對非圖書館 SharePoint列表
但有一種變通方法Created By (Author)
和Modified By(Editor)
字段可以 更新這種方式。基本上,這些字段無法更新的原因是因爲它們被聲明爲ReadOnly。因此,修改列表架構,使系統可用字段修改後(設置ReadOnly
屬性設置爲false),如下圖所示爲Created
領域:
var updateSystemFields = "<Fields>" +
"<Method ID='1'>" +
"<Field ID='{8c06beca-0777-48f7-91c7-6da68bc07b69}' ColName='tp_Created' RowOrdinal='0' ReadOnly='FALSE' Type='DateTime' Name='Created' DisplayName='Created' StorageTZ='TRUE' SourceID='http://schemas.microsoft.com/sharepoint/v3' StaticName='Created' FromBaseType='TRUE' Version='4' ShowInNewForm='FALSE' ShowInEditForm='FALSE' />" +
"</Method>" +
"</Fields>";
$().SPServices({
operation: "UpdateList",
listName: "Requests",
listProperties:"",
updateFields: updateSystemFields,
newFields: "",
deleteFields: "",
listVersion: "",
async: false,
completefunc: function (xData, Status){
console.log('List schema has been modified');
}
});
列表項Created
字段的值可以使用UpdateListItems
操作進行更新:
var dueDateVal = new Date('2016-01-01 6:00:00').toISOString();
$().SPServices({
operation: "UpdateListItems",
async: false,
listName: "Requests",
ID: 1,
valuepairs: [["Created", dueDateVal]],
completefunc: function (xData, Status) {
console.log('List item has been updated');
}
});
它的工作原理!再次感謝@Vadim!你怎麼知道把這些東西放在字段標籤中?我可以在哪裏找到作者?特別是字段ID和版本。 – SeeingSpots
@SeeingSpots,我發現RPC協議非常方便,可以通過瀏覽器調查SharePoint工件(列表,字段等)。你可以看看[這個答案](http://sharepoint.stackexchange.com/a/88848/10610)瞭解更多詳情 –