Question

Code work whell before i add to code: items[i].get_item("SITE")

I can take ID from code, but not a column element. What have I do bad. Here is a code:

<input type='button' id='123' value='Pokaż rekordy' onclick="getSelectedItems();"/>
<div>
<p id="p1"></p>
</div>

<script language="javascript" type="text/javascript">
function getSelectedItems()
{
var ctx = SP.ClientContext.get_current();
var items = SP.ListOperation.Selection.getSelectedItems(ctx);
var myItems = '';
var i;
var siteUrl = '/sites/MCUW-IT/kostka-pilotaze/restauracje-pilotaże/';
document.getElementById("p1").innerHTML="";
for (i in items){
    myItems = items[i].id;

    var targetListItem;
    document.getElementById("p1").innerHTML += items[i].id + " "**+ items[i].get_item("SITE")**;
    window.location.href = window.location.pathname + window.location.search + window.location.hash;

    updateListItem();

function updateListItem() {

    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('Testowa Lista');
    this.oListItem = oList.getItemById(myItems);

    oListItem.set_item('Poka_x017c_WWidoku', 'Tak');

    oListItem.update();

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    alert('Item updated!');
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}



}
}
</script> 

EDITED

It's don't work. Its don't giving me anything as return. See the code:

<input type='button' id='124' value='Pokaż' onclick="abc();"/>
<div>
<p id="p2"></p>
</div>
<script>
function abc() {

 getSelectedItems().then(function(items){
var i;
for (i in items){
    myItems = items[i].id;

    var targetListItem;
    document.getElementById("p2").innerHTML += items[i].id + " "+ items[i].get_item("SITE");
    window.location.href = window.location.pathname + window.location.search + window.location.hash;

    updateListItem();
}
}
}
</script>
Was it helpful?

Solution

var items = SP.ListOperation.Selection.getSelectedItems(ctx)

This will only return key i.e. ID of selected items. To get value of other columns of selected items you have to explicitly query it. You can refer this

Answering your specific query : refer below code

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<script>
var abc = function()
{
getSelectedItems().then(function(items){
var myItems = '';
var i;
document.getElementById("p1").innerHTML="";
for (i in items){
    myItems = items[i].get_id();
    document.getElementById("p1").innerHTML += items[i].get_id() + " **"+ items[i].get_item("SITE")+"**";
    window.location.href = window.location.pathname + window.location.search + window.location.hash;
    var targetListItem;
    updateListItem(myItems);
    }
}
    )
}

function updateListItem(j) {
    var siteUrl = '/sites/MCUW-IT/kostka-pilotaze/restauracje-pilotaże/';
    var clientContext = new SP.ClientContext(siteUrl);
    var oList = clientContext.get_web().get_lists().getByTitle('Testowa Lista');
    this.oListItem = oList.getItemById(j);

    oListItem.set_item('Poka_x017c_WWidoku', 'Tak');

    oListItem.update();

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    alert('Item updated!');
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}


function getSelectedItems()
{
    var dfd = $.Deferred(function () {
       var context = SP.ClientContext.get_current();
       var listId = SP.ListOperation.Selection.getSelectedList(); //get selected list Id
       var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context); //get selected objects
       var list = context.get_web().get_lists().getById(listId);
       var listItems = [];
       for (idx in selectedItemIds)
       {
          var item = list.getItemById(parseInt(selectedItemIds[idx].id));
          listItems.push(item);
          context.load(item);
       }
       context.executeQueryAsync(
         function() {
            dfd.resolve(listItems);
         },
         function (sender, args) {
               dfd.reject(args.get_message());
         }
       ); 
    });
    return dfd.promise();   
}
</script>

<input id="123" onclick="abc();" type="button" value="Pokaż rekordy"/>
<div>
   <p id="p1">​​<br/></p>
</div>

On your button click call this abc function. Hope this helps !!

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top