Aus der Praxis – Abfruf von SharePoint Listenelementen mit dem JavaScript Client Object Model
avatar

In einem aktuellen Projekt wurde die Aufgabe gestellt, mit kleinen Anwendungen die Startseite eines SharePoint 2013 Intranets etwas attraktiver zu gestalten. Meine Aufgabe war es hierzu eine Anwendung zu entwickeln, die auf Basis einer konfigurierbaren SharePoint Liste eine “Information des Tages” anzeigt.

Für die Umsetzung habe ich eine SharePoint hosted App gewählt. In diesem recht einfachen Anwendungsfall liefert mir eine solche App genügend Möglichkeiten für die Umsetzung. Der Zugriff auf eine Standard SharePoint Liste in der gleichen Site Collection ist dabei mir dem JavaScript Client Objekt Model möglich.

Für den Zugriff wird zuerst ein Client Context erstellt. Die Url der Site und den Listennamen lade ich aus dem Query String. Zu beachten ist, dass für den Zugriff auf eine Site bzw. Liste, die nicht im Context der App sondern des Host Webs läuft, ein weiterer Context (der Host Context) benötigt wird.

Aus diesem Host Context wird dann die Liste ausgewählt und mit Hilfe einer leeren SPQuery alle Elemente abgerufen:

var clientContext;
var listItemCollection;
var listItem;

 

$(document).ready(function () { var siteUrl = decodeURIComponent(getQueryStringParameter("SiteUrl")); var listTitle = decodeURIComponent(getQueryStringParameter("ListTitle")); this.clientContext = SP.ClientContext.get_current(); var hostcontext = new SP.AppContextSite(this.clientContext, siteUrl); var list = hostcontext.get_web().get_lists().getByTitle(listTitle); var camlQuery = new SP.CamlQuery(); this.listItemCollection = list.getItems(camlQuery); this.clientContext.load(this.listItemCollection); this.clientContext.executeQueryAsync( Function.createDelegate(this, onListItemCollectionQuerySucceeded), Function.createDelegate(this, onQueryFailed)); });

Nach dem Ausführen der Abfrage kann auf die Listenelemente zugegriffen werden:

function onListItemCollectionQuerySucceeded() {
    var itemIndex = 0; // je nachdem welches Element geladen werden soll

    this.listItem = this.listItemCollection.get_item(itemIndex);
    this.clientContext.load(this.listItem);

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

Und nach einer weiteren Abfrage ist das Listenelement inklusive der Eigenschaften geladen, so dass man z.B. den Titel auslesen kann:

function onListItemQuerySucceeded() { var fieldValue = this.listItem.get_item('Title');

alert(fieldValue); }

Ein Gedanke zu “Aus der Praxis – Abfruf von SharePoint Listenelementen mit dem JavaScript Client Object Model
avatar

  1. Pingback: Aus der Praxis – Abfruf von SharePoint Listenelementen mit dem JavaScript Client Object Model - SharePoint Blogs in German - Bamboo Nation

Schreibe einen Kommentar