2015-09-19 111 views
2

我管理SharePoint 2013中的請求列表,並且需要從另一個列表中導入一些請求。但是,我想保留原始請求日期而不是讓SharePoint分配上傳請求的當前日期/時間,所以我想更改默認的「創建」日期字段。我得到這個爲我添加日期列工作:在SharePoint 2013中更改創建日期

var duedate = new Date(2015,01,11).toISOString(); 
$().SPServices({ 
    operation: "UpdateListItems", 
    async: false, 
    listName: "Requests", 
    ID: 5, 
    valuepairs: [["DueDate", duedate]], 
    completefunc: function (xData, Status) { 
    } 
}); 

它不爲「創建」領域的工作,但 - 我想是因爲它是隻讀的。我需要一種方法使「創建」字段可編輯,以便我可以更改日期。我有很多已經編寫過的代碼引用了這一列,所以我寧願不創建一個默認爲「創建」的新列,除非更改。

獎勵:我的下一個任務是更改默認的「作者」字段,希望解決方案也可以使該字段可編輯。

回答

3

答案很簡單:你不能。系統字段(如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'); 
    } 
}); 
+1

它的工作原理!再次感謝@Vadim!你怎麼知道把這些東西放在字段標籤中?我可以在哪裏找到作者?特別是字段ID和版本。 – SeeingSpots

+0

@SeeingSpots,我發現RPC協議非常方便,可以通過瀏覽器調查SharePoint工件(列表,字段等)。你可以看看[這個答案](http://sharepoint.stackexchange.com/a/88848/10610)瞭解更多詳情 –

0

您無法更改該創建的字段。我已經完成了幾個SP 2013項目,我必須跟蹤和更新日期。我很快就瞭解到我無法依賴創建日期。

我可能是錯的,我會期待着如果有解決方案彈出

+0

這裏沒有很多帖子,但我已經看到足以讓我覺得這是可能的:[1] [2]但是他們沒有發佈所有的代碼,到目前爲止我還沒有能夠得到這些解決方案的工作。我希望有人能幫我填寫所有這些缺失的部分。 [1]:https://sergeytihon.wordpress.com/2012/07/19/how-to-change-splistitem-created-or-modified-date/ [2]:http://blogs.msdn.com/ b/sowmyancs/archive/2008/03/14/can-we-update-the-values-of-by-modified-by-columns-in-sharepoint-lists.aspx – SeeingSpots