Frage

Ich konnte verwenden getSelectedItems() ohne Probleme, damit ich Vorgänge ausführen kann, aber nach meinem (hoffentlich falschen) Verständnis ist der einzige andere Wert, der zurückgegeben wird, der Typ des ausgewählten Elements (objtype)?Ich bin mir nicht sicher, wie ich etwas mit getSelectedItems(ctx) ausführen soll, um beispielsweise den Wert in „Name“ (z. B. SamplePhoto.jpg) abzurufen.Ich denke, ich muss eine andere Methode verwenden, um die IDs mit etwas zu vergleichen, das alle Feldinformationen für jede Datei enthält, und dann die Namenswerte abzurufen, deren IDs mit denen in getSelectedItems(ctx).id übereinstimmen

bearbeiten:Die bisher bereitgestellten Antworten helfen nicht weiter, da es den Anschein hat, als sei die Rückgabe oder das Auffüllen globaler Variablen nicht möglich.

War es hilfreich?

Lösung

SP.ListOperation.Selection.getSelectedItems()-Methode Gibt die Liste der ausgewählten Objekte zurück.Das Objekt enthält zwei Attribute: id Und fsObjType, also ist es nicht SP.ListItem Objekt.

Das folgende Beispiel zeigt, wie eine ausgewählte SP.ListItem-Sammlung zurückgegeben wird

Beispiel:

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();   
}

//Usage
getSelectedItems().then(function(items){
   var fileNames = []; //save file names 
   for (var i =0 ; i < items.length;i++)
   {
       fileNames.push(items[i].get_item('FileRef'));    
   }


});  

Andere Tipps

Sie müssen anrufen load Und executeQueryAsync auf die von Ihnen zurückgegebenen Artikel getSelectedItems und in der Lademethode müssen Sie den internen Namen der Felder übergeben, die Sie abrufen möchten.Siehe Beispiel unten:

var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
    for (var i = 0; i < selectedItems.length; i++) {
        var itemId = selectedItems[i].id;
        GetName(itemId);
    }

    function GetName(itemId) {
        var clientContext = SP.ClientContext.get_current();
        var currentList = clientContext.get_web().get_lists().getById(SP.ListOperation.Selection.getSelectedList());
        this.singleItem = currentList.getItemById(itemId);

        clientContext.load(this.singleItem, 'Name');
        clientContext.executeQueryAsync(Function.createDelegate(this, this.OnSucceeded), Function.createDelegate(this, this.OnFailed));
    }

    function OnSucceeded() {
        this.NameValue = this.singleItem.get_item('Name');
    }


    function OnFailed(sender, args) {
        alert('Error occurred: ' + args.get_message());
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top