Freigeben über


Implementieren der SharePoint Foundation REST-Schnittstelle

Letzte Änderung: Freitag, 3. Dezember 2010

Gilt für: SharePoint Foundation 2010

Dieser Teil der exemplarischen Vorgehensweise zum Erstellen eines benutzerdefinierten WCF-Webdiensts (Windows Communication Foundation) zeigt, wie Sie in Microsoft Visual Studio 2010 eine Windows Forms-Anwendung erstellen, die ADO.NET Data Services und die Microsoft SharePoint Foundation REST-Schnittstelle (Representational State Transfer) verwendet, um über zwei DataGridView-Steuerelemente mit Listendaten zu interagieren. Die SharePoint Foundation REST-Schnittstelle stellt den Datenkontext für die Interaktion mit einer Projects-Liste und einer Employees-Liste über zwei Steuerelemente bereit. Das Employees-Steuerelement zeigt die Mitarbeiter an, die dem Projektelement zugeordnet sind, das Benutzer im Projects-Steuerelement ausgewählt haben. Darüber hinaus können Benutzer mit dem Projects-Steuerelement Änderungen an Elementen in der Projects-Datenquelle vornehmen und SharePoint-Listendaten mit diesen Änderungen aktualisieren.

Erstellen einer Windows Forms-Anwendung für die Interaktion mit Listendaten

  1. Öffnen Sie Visual Studio, klicken Sie auf Datei, zeigen Sie auf Neu, und klicken Sie auf Projekt. Wählen Sie im Dialogfeld Neues Projekt im Feld Installierte Vorlagen entweder Visual Basic oder Visual C# aus. Wählen Sie dann Windows, dann Windows Forms-Anwendung aus, und geben Sie ProjectTracker im Feld Name ein. Klicken Sie auf OK.

  2. Klicken Sie zum Herstellen der Verbindung mit Daten, die auf einer SharePoint-Website gespeichert sind, auf Daten und dann auf Neue Datenquelle hinzufügen. Wählen Sie im Assistenten zum Konfigurieren von DatenquellenSharePoint aus, und klicken Sie dann auf Weiter.

  3. Geben Sie im Feld Dienstverweis hinzufügen den Pfad zu ListData.svc ein, dem Dienst, der den Zugriff auf die SharePoint Foundation REST-Schnittstelle bereitstellt. Dieser Pfad muss die Website einschließen, die die Listen enthält, und muss das virtuelle Verzeichnis _vti_bin enthalten, beispielsweise http:// Server/sites/SiteCollection/WebSite/_vti_bin/ListData.svc. Klicken Sie auf Gehe zu, auf OK und dann auf Fertig stellen, um dem Projekt den Dienstverweis hinzuzufügen. Durch den Dienstverweis wird die Anwendung mit der REST-Schnittstelle verbunden und ein Entitätsdatenmodell der SharePoint Foundation-Website für die Definition von Entitätsklassen abgerufen. SharePoint Foundation-Listendaten werden an den Dienstverweis als stark typisierte Datenquelle angefügt.

  4. Klicken Sie in der Entwurfsansicht von Form1.cs auf Daten, und klicken Sie dann auf Datenquellen anzeigen, um das Feld Datenquellen zu öffnen. Ziehen Sie DataGridView-Steuerelemente für die Listen Projects und Employees auf Form1, um die Benutzeroberfläche für die Interaktion mit Listendaten bereitzustellen.

  5. Klicken Sie zum Entfernen unerwünschter Spalten aus der Anzeige in den DataGridView-Steuerelementen mit der rechten Maustaste auf das jeweilige Steuerelement, klicken Sie auf Spalten bearbeiten, wählen Sie im Feld Spalten bearbeiten jede Spalte aus, und klicken Sie auf Entfernen. Entfernen Sie aus dem Projects-DataGridView-Steuerelement alle Spalten bis auf Title, Description und Due Date. Entfernen Sie aus dem Employees-DataGridView-Steuerelement alle Spalten bis auf Full Name, Job Title und Team. Legen Sie im Feld Eigenschaften für gebundene Spalten die Title-Spalte der Projects-Liste und die Full Name-Spalte der Employees-Liste auf Füllen fest, und klicken Sie dann auf OK.

  6. Doppelklicken Sie zum Auffüllen der DataGridView-Steuerelemente mit Listendaten von der SharePoint Foundation-Website auf den Rand von Form1, um den Code anzuzeigen. Fügen Sie eine using-Anweisung hinzu, um den von Ihnen erstellten Namespace ServiceReference1 zu importieren, und verwenden Sie einen Konstruktor, um einen stark typisierten Datenkontext zur Darstellung der Listendaten zu erstellen. Sie können diesen Datenkontext verwenden, um Anforderungen an die Website zu senden. Geben Sie im Konstruktor wie folgt die URI des WCF-Diensts an, der die REST-Schnittstelle für den Zugriff auf Listendaten auf der angegebenen Website bereitstellt.

    Imports ProjectTracker.ServiceReference1
    Imports System.Net
    
    Public Class Form1
    
        Private Shared websiteUrl As String = "http://YourServer/sites/YourSiteCollection/YourSite"
    
        Private context As New MyWebsiteDataContext(
            New Uri(websiteUrl + "/_vti_bin/listdata.svc"))
    
        Public Sub New()
            InitializeComponent()
        End Sub
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace ProjectTracker
    {
        using ServiceReference1;
        using System.Net;    
    
        public partial class Form1 : Form
        {
    
        private static string websiteUrl= "http://YourServer/sites/YourSiteCollection/YourSite";
    
            MyWebsiteDataContext context = new MyWebsiteDataContext(
                new Uri(websiteUrl + "/_vti_bin/listdata.svc"));
    
            public Form1()
            {
                InitializeComponent();
            }
    
  7. Legen Sie im Form1_Load-Ereignis die Authentifizierung für die Anforderung fest. Fügen Sie eine using-Anweisung hinzu, um den System.Net-Namespace zu importieren. Bei der integrierten Windows-Authentifizierung können Sie die Standardanmeldeinformationen aus dem Anmeldeinformationscache verwenden. Füllen Sie außerdem im Form1_Load-Ereignis die Datenquelle, die von Visual Studio für das Projects-DataGridView-Steuerelement erstellt wurde, wie folgt mithilfe der Datenkontextklasse.

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            context.Credentials = CredentialCache.DefaultCredentials
    
            ProjectsBindingSource.DataSource = context.Projects
        End Sub
    
        private void Form1_Load(object sender, EventArgs e)
        {
            context.Credentials = CredentialCache.DefaultCredentials;
            projectsBindingSource.DataSource = context.Projects;
        }
    
  8. Erstellen Sie zum Auffüllen des Employees-DataGridView-Steuerelements mit Listendaten einen Handler für das CurrentChanged-Ereignis in der Projects-Datenquelle. Wenn der Benutzer ein Projekt im Projects-DataGridView-Steuerelement auswählt, wird das Employees-DataGridView-Steuerelement durch eine entsprechend dem ausgewählten Projekt gefilterte Liste von Mitarbeitern aufgefüllt. Zum Hinzufügen des CurrentChanged-Ereignisses in der Entwurfsansicht können Sie unter dem Formular mit der rechten Maustaste auf projectsBindingSource klicken, auf Eigenschaften und dann im Fenster Eigenschaften auf das Ereignissymbol klicken und schließlich auf das CurrentChanged-Ereignis doppelklicken.

  9. Verwenden Sie eine LINQ-Abfrage (Language Integrated Query), um die Mitarbeiter herauszufiltern, deren Projektbezeichner (ID) der ID des aktuell ausgewählten Projekts entspricht. Sie können das aktuell ausgewählte Projekt wie folgt ermitteln, indem Sie die Current-Eigenschaft der Projektdatenquelle verwenden und das aktuelle Element in den Typ ProjectsItem umwandeln.

        Private Sub ProjectsBindingSource_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProjectsBindingSource.CurrentChanged
            EmployeesBindingSource.DataSource =
                From emp In context.Employees _
                Where emp.Project.Id = DirectCast(ProjectsBindingSource.Current, ProjectsItem).Id _
                Select emp
        End Sub
    
        private void projectsBindingSource_CurrentChanged(object sender, EventArgs e)
        {
            employeesBindingSource.DataSource =
                from emp in context.Employees
                where emp.Project.Id == ((ProjectsItem)projectsBindingSource.Current).Id
                select emp;
        }
    

    Beachten Sie, dass in dem Beispiel die Project-Navigationseigenschaft der Projects-Liste verwendet wird, die von der Project-Nachschlagespalte in der Employees-Liste zugeordnet wird.

  10. Zum Hinzufügen von Updateunterstützung, durch die Benutzeränderungen an Daten im Formular auf Daten auf der Website übernommen werden, aktivieren Sie die Schaltfläche Speichern in der Entwurfsansicht, indem Sie im Menü von Form1 mit der rechten Maustaste auf das Symbol Speichern klicken und dann auf Aktiviert klicken. Doppelklicken Sie auf die Schaltfläche Speichern, um Code anzuzeigen und einen projectsBindingNavigatorSaveItem_Click-Ereignishandler hinzuzufügen. Fügen Sie die folgende Codezeile hinzu, um ADO.NET Data Services zum Speichern der Änderungen auf der Website zu veranlassen.

        Private Sub ProjectsBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProjectsBindingNavigatorSaveItem.Click
            context.SaveChanges()
        End Sub
    
        private void projectsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            context.SaveChanges();
        }
    
  11. Da Sie eine Windows Forms-Anwendung erstellen, müssen Sie Code hinzufügen, der dem Datenkontext geänderte Objekte mitteilt. Zum Hinzufügen eines CurrentItemChanged-Ereignisses klicken Sie mit der rechten Maustaste in der Entwurfsansicht auf projectBindingSource, klicken Sie auf Eigenschaften, klicken Sie im Fenster Eigenschaften auf das Ereignissymbol, und doppelklicken Sie auf das CurrentItemChanged-Ereignis, um den Handler in Form1.cs einzufügen. Verwenden Sie die UpdateObject(Object)-Methode des ADO.NET-Datenkontexts in diesem Handler, und verwenden Sie die Current-Eigenschaft wie folgt, um die geänderte Eigenschaft anzuzeigen.

        Private Sub ProjectsBindingSource_CurrentItemChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProjectsBindingSource.CurrentItemChanged
            context.UpdateObject(ProjectsBindingSource.Current)
        End Sub
    End Class
    
        private void projectsBindingSource_CurrentItemChanged(object sender, EventArgs e)
        {
            context.UpdateObject(projectsBindingSource.Current);
        }
    }}
    
  12. Drücken Sie zum Testen des Formulars F5, und nehmen Sie einige Änderungen an einem Element im Projects-DataGridView-Steuerelement vor. Wenn Sie auf Speichern klicken, werden die Änderungen an die Website weitergegeben.

    HinweisHinweis

    Möglicherweise müssen Sie außerhalb der Zelle klicken, in der Sie Änderungen vornehmen, bevor Sie auf die Schaltfläche Speichern klicken, um die Auswirkungen der Änderungen zu sehen.

Das vollständige Form1-Codebeispiel finden Sie unter Vollständiges SharePoint Foundation WCF-Beispiel "Form1".

Siehe auch

Konzepte

Implementieren der SharePoint Foundation REST-Schnittstelle

Abfragen von SharePoint Foundation mit ADO.NET Data Services

Weitere Ressourcen

WCF REST Programming Model