在SharePoint 2013中更改创建日期



我在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操作更新CreatedModifiedCreated ByModified 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');
    }
});

相关内容

  • 没有找到相关文章

最新更新