在 SharePoint 2013 中更改创建日期
Change Created Date in SharePoint 2013
我在 SharePoint 2013 中管理一个请求列表,我需要从另一个列表导入一些请求。但是,我想保留原始请求日期,而不是让 SharePoint 分配我上传请求的当前 date/time,因此我想更改默认的 "Created" 日期字段。我让这个适用于我添加的日期列:
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" 字段 - 我想是因为它是只读的。我需要一种使 "Created" 字段可编辑的方法,以便我可以更改日期。我已经编写了很多引用此专栏的代码,所以我宁愿不创建默认为 "Created" 的新专栏,除非更改。
奖励:我的下一个任务是更改默认 "Author" 字段,希望该解决方案也可以使该字段可编辑。
简短的回答:你不能。 Created
、Modified
、Created By
、Modified By
等系统字段不支持通过 SharePoint Web 服务 UpdateListItems
操作进行更新。
Note: Created By (Author)
and Modified By(Editor)
fields can be
updated in this manner only for non-library SharePoint lists
但有一个解决方法。这些字段无法更新的原因基本上是因为它们被声明为 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');
}
});
我在 SharePoint 2013 中管理一个请求列表,我需要从另一个列表导入一些请求。但是,我想保留原始请求日期,而不是让 SharePoint 分配我上传请求的当前 date/time,因此我想更改默认的 "Created" 日期字段。我让这个适用于我添加的日期列:
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" 字段 - 我想是因为它是只读的。我需要一种使 "Created" 字段可编辑的方法,以便我可以更改日期。我已经编写了很多引用此专栏的代码,所以我宁愿不创建默认为 "Created" 的新专栏,除非更改。
奖励:我的下一个任务是更改默认 "Author" 字段,希望该解决方案也可以使该字段可编辑。
简短的回答:你不能。 Created
、Modified
、Created By
、Modified By
等系统字段不支持通过 SharePoint Web 服务 UpdateListItems
操作进行更新。
Note:
Created By (Author)
andModified By(Editor)
fields can be updated in this manner only for non-library SharePoint lists
但有一个解决方法。这些字段无法更新的原因基本上是因为它们被声明为 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');
}
});