2014-12-07 79 views
0

我在SharePoint Online中有一個自定義HTML表單的列表。該形式的結構如下:如何使用JavaScript在SharePoint列表中批量創建項目?

國家:

顏色:

類型:

(這些都是在一個表/ GridView和可重複/多)名稱:名字:性別:年齡:

我的目標是在table/gridview中有多達40行,這樣人們可以添加記錄,一旦他們點擊保存按鈕,就會爲行中的每個條目創建一個項目,國家,顏色和類型爲廣告與每條記錄一起。

所以,最終的結果將是每行.. EX創建SharePoint列表項: 國家,顏色,類型,名稱,姓氏,性別,年齡 國家,顏色,類型,名稱,姓氏,性別,年齡

我可以使用下面的腳本創建項目,但我想弄清楚如何循環遍歷table/gridview中的所有項目,併爲每個列中的數據在每個行中使用相同的腳本創建項目行:

<script> 

var siteUrl = 'http://example.org'; 

function createListItem() { 

    var clientContext = new SP.ClientContext(siteUrl); 
    var oList = clientContext.get_web().get_lists().getByTitle('Testing1'); 

    var itemCreateInfo = new SP.ListItemCreationInformation(); 
    this.oListItem = oList.addItem(itemCreateInfo); 

    oListItem.set_item('Title', 'My New Item!'); 

    oListItem.update(); 
    clientContext.load(oListItem); 

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
} 
function onQuerySucceeded() { 
    alert('Item created: ' + oListItem.get_id()); 
} 
function onQueryFailed(sender, args) { 
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 
</script><button onclick="createListItem();">Try it</button> 

任何幫助表示讚賞

+0

你能提供額外的代碼作爲DOM渲染爲表/網格視圖... – Godwin 2014-12-08 14:18:40

回答

1

您可以嘗試下面的腳本,請注意這些項目被加載到ClientContext堆棧並在一次調用中執行。對我來說工作約6項。如果您遇到任何性能問題,共同處理40個項目,則可以相應地修改要爲每個項目執行的代碼,或者相反,每10個項目執行一次clientcontext.executequeryasync。

<script> 
 

 
var siteUrl = 'Your Site URL'; 
 

 
function createListItem() { 
 

 
    var clientContext = new SP.ClientContext(siteUrl); 
 
    var oList = clientContext.get_web().get_lists().getByTitle('testGodwin');  
 
\t var cntInt; 
 
\t var itemCreateInfo; 
 
\t 
 
\t // get the Table 
 
\t var table = document.getElementById('tblOne'); 
 
\t var rowLength = table.rows.length; 
 
    
 
\t //Loop through each row 
 
    for (cntInt = 0; cntInt < rowLength; cntInt++) { 
 
\t 
 
\t \t // Set the column values here - example considers first cell holds Title value 
 
\t  var row = table.rows[cntInt]; 
 
\t \t var titleVal = row.cells[0] ; 
 
\t \t 
 
\t \t // Create the item and Load into Stack 
 
\t \t itemCreateInfo = new SP.ListItemCreationInformation(); 
 
\t \t var oListItem = oList.addItem(itemCreateInfo); \t 
 
\t \t oListItem.set_item('Title', titleVal); 
 
\t \t oListItem.update(); 
 
\t \t clientContext.load(oListItem); 
 
\t \t 
 
\t \t } 
 
\t \t \t 
 
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
 
} 
 
function onQuerySucceeded() { 
 
    alert('Item created: ' + oListItem.get_id()); 
 
} 
 
function onQueryFailed(sender, args) { 
 
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
 
} 
 
</script><button onclick="createListItem();">Try it</button>

+0

嗨戈德溫,感謝您的幫助。我得到了腳本來創建項目和循環,但是當我在表列中添加一些文本時,我將下列文本添加到SharePoint列表項目中,一旦我嘗試按鈕:System.Collections.Generic.Dictionary'2 [System.String ,System.Object]有什麼建議嗎?謝謝 – 2014-12-09 05:59:38

+0

嗨傑克,這是添加到項目中的每一列或只是一個特定的列? – Godwin 2014-12-10 15:55:01

+0

我認爲這是你的表格在DOM中呈現的方式。如果您可以共享在表格單元格的DOM中渲染的代碼,那將會很好。你可以請嘗試下面的行更改var titleVal = row.cells [0] ---要----- var titleVal = row.cells [0] .innerhtml – Godwin 2014-12-10 16:02:27

相關問題