I am trying to get selected rows in the list and select ids for the pdf generator. Debug stops after context.load(rows) and nothing happens after that till I reload the page. If remove code for selecting many ids and select just one and write context.load(row) - it works good. So how to get more than one row?
Elements.xml:
<CustomAction Id="CustomAction"
RegistrationId="100"
RegistrationType="List"
Location="CommandUI.Ribbon"
Rights="ManageLists"
Sequence="25"
Title="Generate pdf">
<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition Location="Ribbon.ListItem.Actions.Controls._children">
<Button Id="GeneratePdf"
Alt="Generate pdf by template"
Description="Generate pdf by template"
Sequence="25"
Command="GeneratePdf"
LabelText="Generate pdf"
TemplateAlias="o1" />
</CommandUIDefinition>
</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler Command="GeneratePdf"
EnabledScript="javascript:
function enableGeneratePdf() {
var items = SP.ListOperation.Selection.getSelectedItems();
return (items.length >= 1);
}
enableGeneratePdf();"
CommandAction="javascript:
function getSelectedIds() {
var ctx = SP.ClientContext.get_current();
var items = SP.ListOperation.Selection.getSelectedItems(ctx);
var selectedItems = '';
for (index in items) {
selectedItems = selectedItems + ',' + items[index].id;
}
return selectedItems.substring(1, selectedItems.length);
}
//GeneratePdf('{SelectedListId}');
GeneratePdf(getSelectedIds());" />
</CommandUIHandlers>
</CommandUIExtension>
</CustomAction>
<Control Id="AdditionalPageHead" ControlSrc="~/_controltemplates/generator.ascx" Sequence="25"/>
here is generator.ascx:
<script language="ecmascript" type="text/ecmascript">
var docsList;
var web;
var context;
var rows;
//var row;
var columnName = "Title";
function GeneratePdf(rowNumbers) {
context = new SP.ClientContext.get_current();
web = context.get_web();
docsList = web.get_lists().getByTitle("Documents");
var ids = rowNumbers.split(',');
rows = new Array(ids.length);
var count = 0;
for (index in ids) {
rows[count] = docsList.getItemById(index);
count++;
}
//row = docsList.getItemById(rowNumber);
context.load(web);
context.load(docsList);
context.load(rows);
//context.load(row);
context.executeQueryAsync(OnDocumentsListsLoaded);
}
function OnDocumentsListsLoaded() {
var ids = '';
for (index in rows) {
ids = ids + ',' + row.get_item(columnName);
}
//var id = row.get_item(columnName);
window.location = "/_layouts/Documents/DownloadGeneratedPdf.aspx?ids=" + ids.substring(1, ids.length);
}
</script>