【问题标题】:Change Created Date in SharePoint 2013在 SharePoint 2013 中更改创建日期
【发布时间】:2015-09-19 00:20:16
【问题描述】:

我在 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) {
    }
});

但它不适用于“已创建”字段 - 我认为是因为它是只读的。我需要一种使“已创建”字段可编辑的方法,以便更改日期。我已经编写了很多引用此列的代码,因此除非更改,否则我宁愿不创建默认为“已创建”的新列。

奖励:我的下一个任务是更改默认的“作者”字段,因此希望该解决方案也可以使该字段可编辑。

【问题讨论】:

    标签: javascript jquery sharepoint sharepoint-2013 spservices


    【解决方案1】:

    简短的回答:你不能。不支持通过 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');
        }
    });
    

    【讨论】:

    • 有效!再次感谢@Vadim!你怎么知道要放在字段标签中的东西?在哪里可以找到作者?尤其是字段 ID 和版本。
    • @SeeingSpots,我发现 RPC 协议非常方便通过浏览器调查 SharePoint 工件(列表、字段等)。您可以查看this answer 了解更多详情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多