2

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>
  • 1
    var items = SP.ListOperation.Selection.getSelectedItems(ctx); This will return only key i.e. ids of selected item. If you want other calumn data you have to explicitly call using that id. – Bhaskar Dhone Jul 27 '18 at 9:06
  • but how. please write sample of code – Grzegorz Z Jul 27 '18 at 9:11
  • 1
    This will help : sharepoint.stackexchange.com/questions/92436/… – Bhaskar Dhone Jul 27 '18 at 9:13
  • But how connect this with button and selected IDs? – Grzegorz Z Jul 27 '18 at 9:17
  • 1
    Your requirement is to update column value to selected items right ? – Bhaskar Dhone Jul 27 '18 at 9:19
1
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 !!

  • 1
    this in addition to code function of getSelectedItems() from shared reference – Bhaskar Dhone Jul 27 '18 at 10:22
  • 1
    Please try updated answer. – Bhaskar Dhone Jul 27 '18 at 10:36
  • 1
    what is the error that you are getting and where it is failing exactly – Bhaskar Dhone Jul 27 '18 at 10:52
  • 1
    You have to give jquery reference in order to use differed. Tip : My solution does work. Code may not work as is as its not tested and tried. Simply manipulated in editor to your reference . You have to debug and grab error and then rectify accordingly. – Bhaskar Dhone Jul 27 '18 at 11:22
  • 1
    let me give me exact code. Give me some time – Bhaskar Dhone Jul 30 '18 at 8:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.