我在SharePoint 2013中管理一个请求列表,我需要从另一个列表导入一些请求。但是,我想保留原始的请求日期,而不是让SharePoint指定我上传请求的当前日期/时间,所以我想更改默认的"创建"日期字段。我让它为我添加的日期列工作:
var duedate = new Date(2015,01,11).toISOString();
$().SPServices({
operation: "UpdateListItems",
async: false,
listName: "Requests",
ID: 5,
valuepairs: [["DueDate", duedate]],
completefunc: function (xData, Status) {
}
});
对于"Created"字段不起作用,我想是因为它是只读的。我需要一种方法,使"创建"字段可编辑,所以我可以改变日期。我已经写了很多代码,引用了这个列,所以我宁愿不做一个默认为"创建"的新列,除非改变。
奖金:我的下一个任务将是改变默认的"Author"字段,希望解决方案也可以使该字段可编辑
简短的回答:你不能。不支持通过SharePoint Web Services UpdateListItems
操作更新Created
、Modified
、Created By
、Modified By
等系统字段。
备注:
更新Created By (Author)
和Modified By(Editor)
字段可以为此方式仅针对非库 SharePoint列表
但是有一个解决方法。基本上,这些字段不能更新的原因是因为它们被声明为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');
}
});