我在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>
感谢任何帮助
答案 0 :(得分: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');
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;