如何使用javascript批量创建SharePoint列表中的项目?

时间:2014-12-07 23:05:11

标签: javascript sharepoint gridview csom

我在SharePoint Online中有一个包含自定义HTML表单的列表。表单具有以下结构:

国家:

颜色

类型:

(这些是在表/ gridview中并且可重复/很多)姓名:姓氏:性别:年龄:

我的目标是在表/ gridview中最多包含40行,以便人们可以添加记录,一旦他们点击了保存按钮,就会为该行中的每个条目创建一个项目,并附加来自Country的附加信息,每条记录添加的颜色和类型。

因此,最终结果将是为每一行创建的SharePoint列表项.ex: 国家,颜色,类型,名称,姓氏,性别,年龄 国家,颜色,类型,姓名,姓氏,性别,年龄

我可以使用下面的脚本创建项目但是我试图弄清楚如何循环遍历表/ 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> 

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您可以尝试以下脚本,请注意这些项目已加载到ClientContext堆栈中并在一次调用中执行。我为大约6件物品做得很好。如果您在40个项目中共同执行任何性能问题,则可以相应地修改要为每个项目执行的代码,或者为每10个项目执行clientcontext.executequeryasync。

&#13;
&#13;
<script>

var siteUrl = 'Your Site URL';

function createListItem() {

    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('testGodwin');    
	var cntInt;
	var itemCreateInfo;
	
	// get the Table
	var table = document.getElementById('tblOne');
	var rowLength = table.rows.length;
    
	//Loop through each row
    for (cntInt = 0; cntInt < rowLength; cntInt++) { 
	
		// Set the column values here - example considers first cell holds Title value
	    var row = table.rows[cntInt];
		var titleVal = row.cells[0] ;
		
		// Create the item and Load into Stack
		itemCreateInfo = new SP.ListItemCreationInformation();
		var oListItem = oList.addItem(itemCreateInfo);	
		oListItem.set_item('Title', titleVal);
		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> 
&#13;
&#13;
&#13;