2014-12-07 4 views
0

У меня есть список в SharePoint Online, который имеет пользовательскую форму HTML. Форма имеет следующую структуру:Как массировать элементы в списке SharePoint с помощью javascript?

Страна:

Цвет:

Тип:

(Они находятся в таблице/GridView и повторяемые/много) Имя: Фамилия: Пол: Возраст :

Моя цель состоит в том, чтобы иметь до 40 строк в таблице/gridview, чтобы люди могли добавлять записи, и как только они нажимают кнопку сохранения, элемент должен быть создан для каждой записи в строке с дополнительной добавленной информацией из Страна, цвет и тип объявления с каждой записью.

Таким образом, конечный результат будет список SharePoint элементом, созданный для каждой строки .. например: Страны, цвет, тип, имя, Фамилия, Пол, Возраст Страна, цвет, тип, имя, Фамилия, Пол, Возраст

Я могу создавать элементы, используя нижеприведенный скрипт, но пытаюсь выяснить, как можно пройти через все элементы таблицы/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

ответ

1

Вы можете попробовать следующий скрипт, обратите внимание, что элементы загружаются в стек ClientContext и выполняются одним вызовом. Работал отлично для меня около 6 предметов. Если вы столкнулись с проблемой производительности, связанной с этим, для 40 элементов, вы можете соответственно изменить код для выполнения для каждого элемента или вместо этого выполнить clientcontext.executequeryasync для каждых 10 элементов.

<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

Hi Годвин, спасибо за вашу помощь. Я получил сценарий для создания элементов и циклов, но когда я добавляю текст в столбцы таблицы, я получаю следующий текст, добавленный в элемент списка SharePoint, когда я нажимаю кнопку try: System.Collections.Generic.Dictionary'2 [System.String , System.Object] Любые предложения? Спасибо –

+0

Привет jack, это добавляется в каждый столбец элемента или только один столбец? – Godwin

+0

Я думаю, что это связано с тем, как ваша таблица отображается в DOM. Хорошо, если вы можете поделиться рендерингом кода в DOM вашей ячейки таблицы. Можете ли вы попробовать следующее изменение в строке var titleVal = row.cells [0] --- Кому ----- var titleVal = row.cells [0] .innerhtml – Godwin

 Смежные вопросы

  • Нет связанных вопросов^_^