Need assistance: JavaScript Code
-
20-01-2021 - |
문제
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>
해결책
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 !!
제휴하지 않습니다 sharepoint.stackexchange