Dieser Artikel wurde maschinell übersetzt.

Office-Add-Ins

3 Lösungen für den Zugriff auf SharePoint-Daten in Office 2010

Donovan Follette

Beispielcode herunterladen

Millionen von Menschen verwenden die Clientanwendungen Microsoft Office Unterstützung von Ihrer täglichen Arbeit, kommunizieren, Daten, Zahlen Crunch bereinigen, Verfassen von Dokumenten, Präsentationen zu übermitteln und Geschäftsentscheidungen. Je zuvor aufsteigender Zahlen, viele sind Interaktion mit Microsoft SharePoint als ein Portal für die Zusammenarbeit sowie als Plattform für den Zugriff auf freigegebene Daten und Dienste.

Einige Entwickler in einem Unternehmen nicht noch getroffen haben die Möglichkeit zum Erstellen von benutzerdefinierten Funktionen in Office-Anwendungen nutzen, integrierte Funktionen, die eine nahtlose bietet für den Benutzer zum SharePoint-Daten aus vertrauten Produktivitätsanwendungen direkt zugreifen. Für Unternehmen, die Möglichkeiten zur Verbesserung der Endbenutzerproduktivität der ist die SharePoint-Daten direkt in Office-Anwendungen zur Verfügung stellen eine erhebliche Option zu berücksichtigen.

Mit der Veröffentlichung von SharePoint 2010 gibt es eine Reihe von neuen Möglichkeiten für die SharePoint-Daten zugreifen und diese in den Office-Benutzer zur Verfügung. Diese reichen von nahezu ohne Code-Lösungen über SharePoint-Arbeitsbereich 2010 (früher bezeichnet als Groove), ermöglicht die direkte Synchronisierung zwischen SharePoint und Outlook, die neue SharePoint-REST-API und dem neuen Client-Objektmodell. Genauso wie in Microsoft Office SharePoint Server (MOSS) 2007, steht eine Vielzahl von Webdiensten in SharePoint 2010 ebenfalls verwendet.

In diesem Artikel werden wir eine Reihe von Lösungen ohne Code zu beschreiben und zeigen, wie Sie mit diesen neuen Features in SharePoint 2010 ein paar mehr komplexe-Lösungen zu erstellen.

Externe Datenquellen

Let’s zunächst einen Blick auf die SharePoint-Listentypen, die Sie einsetzen können, als Datenquellen.

Eine besonders nützliche Datenquelle ist eine externe Liste, die über eine Verbindung mit einer Line-of-Business (LOB)-System abgerufene Daten angezeigt. MOSS 2007 können Sie eine Verbindung mit LOB-Daten mithilfe der Business Data Catalog (BDC), die nur-Lese-Zugriff auf Back-End-Systemen zur Verfügung gestellt. SharePoint-2010 bietet Business Connectivity Services (BCS), d. h. eine Weiterentwicklung des BDCS, der vollständigen Lese-/Schreibzugriff auf die LOB-Daten unterstützt.

Warum sollten Sie LOB-Daten in SharePoint zu bringen? Sollten Sie den Anwendungsfall, in dem Sie ein System Customer Relationship Management (CRM) haben, die nur eine begrenzte Anzahl von Personen in der Organisation direkt zugreifen kann. Es ist jedoch eine Kundentabelle in der Datenbank mit Namen und Adresse Daten, die von vielen anderen verwendet werden können, wenn es verfügbar waren. In der Praxis erhalten Sie wahrscheinlich Benutzer diese Informationen aus verschiedenen nicht autorisierenden Quellen kopieren und in Ihre Office-Dokumente einfügen. Es wäre besser, diese Kundendaten von autorisierenden CRM-System zugreifen und es in SharePoint verfügbar zu machen, als einer externen Liste, die Office-Clients zugreifen können.

SharePoint Designer 2010 ist ein Tool zum Konfigurieren des Zugriffs auf LOB-System und seine Daten in einer SharePoint-Liste externer zur Verfügung zu stellen. Es gibt ein paar dazu erforderlichen Schritte.

Der erste Schritt besteht darin, eine neue externe Content Type (ECT) erstellen. Die ECT enthält Metadaten, die Beschreibung der Struktur von der Back-End-Daten, z. B. die Felder und SharePoint verwendet wird, zur Interaktion mit CRUD-Methoden. Nach Erstellung der ECT kann auf einer beliebigen Website in SharePoint aus eine externe Liste generiert werden. Externe Listen im Aussehen und Verhalten wie andere Standardliste in SharePoint, aber die externe Listendaten nicht in SharePoint gespeichert sind. Stattdessen wird es über die ECT beim Zugriff durch Endbenutzer abgerufen.

SharePoint Designer enthält eine Standardunterstützung zum Herstellen einer Verbindung zu externen Datenquellen, einschließlich SQL Server, Windows Communication Foundation (WCF) und Microsoft .NET Framework. Aus diesem Grund kann ein ECT problemlos erstellt werden, für die Verbindung mit allen SQL Server-Datenbanktabelle oder Ansicht, WCF-Dienst oder den Webdienst. Benutzerdefinierte Lösungen für .NET können in Visual Studio 2010 erstellt werden unter Verwendung der Projektvorlage für neuen SharePoint 2010 Business-Connectivity Datenmodell.

Für die Zwecke dieses Artikels wurde der Typ der SQL Server-Datenquelle verwendet, um ein ECT für eine Datenbanktabelle zu erstellen. Dann wurde die ECT verwendet, um eine externe Liste erstellen. Abbildung 1 zeigt die sich ergebende “ Kunden von CRM ” ECT nach Abschluss der Konfiguration in SharePoint Designer.

image: ECT Configuration for Accessing External CRM Data

Abbildung 1 ECT-Konfiguration für den Zugriff auf externe CRM Data

Es gibt ein paar Dinge hier hervorzuheben. Bemerken Sie zuerst im Bereich externe Content Type Information, dass der Eigenschaftenwert Office Art Kontakt festgelegt ist. Während der Konfiguration können Sie die externe Datenfelder eine entsprechende Office-Elementtyp wie Kontakt zuordnen. Ist dies nicht zwingend erforderlich, aber diese Kennzeichnung wurde gewählt, weil die Name und die Adresse Daten aus der CRM-Datenbank problemlos an einen Outlook-Kontakt zugeordnet werden können, ein. Sie werden diese Konfigurationsoption Ergebnis in Outlook verwenden können.

Beachten Sie Zweitens in externe Content Type-Operations-Bereich, dass vollständige CRUD-Methoden für diese ECT aktiviert wurden. Dies war aufgrund von Auswahlen im Konfigurations-Assistenten. Jedoch kann sicherlich es aus geschäftlichen Gründen LOB-Systemoperationen, die nur-Lese-beschränken. In diesem Fall können Sie einfach die Vorgänge lesen auflisten und Lesen-Element während der Konfiguration auswählen. Dies sind nur zwei Vorgänge, die zum Erstellen einer ECT erforderlich.

Sobald die ECT erstellt wurde, ist es einen einfachen Schritt zu eine externe Liste daraus erstellen. Dazu erstellen eine Liste der neue externe aus innerhalb von SharePoint oder SharePoint Designer.

Standard-SharePoint-Listen

Natürlich können Sie standardmäßige SharePoint-Listen zum Anzeigen von Geschäftsdaten einsetzen. Genommen Sie an, Ihre Abteilung Schulungen Kursinhalt verwaltet. Sie verwalten zwei SharePoint-Listen: Kurs-Kategorie und Kurs. Diese Listen enthalten die Kursinformationen, mit denen Mitarbeiter auf anderen Teams Kunden Korrespondenz, Broschüren oder Werbekampagnen erstellen. Damit die Daten von einem kleinen Team verwaltet werden, jedoch müssen über das Unternehmen für die Verwendung von vielen Personen jederzeit verfügbar sein.

SharePoint-2010 verfügt über eine neue Funktion, die bei Suchvorgängen Beziehungen zwischen Listen bilden. Beim Erstellen einer neuen Spalte in einer Liste, einer der Optionen besteht darin, die Spalte einen Lookup-Typ zu definieren, geben Sie eine andere Liste innerhalb der Website als Quelle an. SharePoint unterstützt Single Value Lookups für die 1: n-Beziehungen oder mehrwertige Lookups für die n: n Beziehungen. Wenn Sie sich entscheiden, verwaltet SharePoint außerdem referenziellen Integrität zwischen den Listen unterstützt eingeschränkte oder cascading löscht. Dies bietet eine Reihe von Möglichkeiten, in das Sie einrichten und in SharePoint-Listen verwenden.

Zurückgehen zu unserem Beispiel, könnten Sie problemlos erstellen ein Kurses Liste Nachschlagefelds namens Kategorie, ist die Quelle der Liste Kurs-Kategorie wie in Abbildung 2 ist.

image: Using a Lookup List to Source Course Category Data

Abbildung 2 mithilfe einer Liste Suchen auf Kurs Kategorie für Quelldaten

Onlineschalten von SharePoint-Listendaten zu Office

Bisher haben wir suchten, wie externe Daten Oberflächen, wie SharePoint-Listen mithilfe des neuen BCS-Features in SharePoint 2010. Benutzer können die Daten über den Browser auf einem Computer oder einem mobilen Gerät zugreifen, aber Benutzer werden wahrscheinlich die umfangreiche Erfahrungen der vollständigen Office-Clientanwendung schätzen. Aktivieren Sie Let’s jetzt unsere Aufmerksamkeit auf die Verwendung von SharePoint-Listendaten auf dem Client gibt es zwei Möglichkeiten. Zunächst sehen wir, wie Sie Daten ohne Schreiben von Code mithilfe des SharePoint-Arbeitsbereich und Outlook zugreifen können.

Bei der Entwicklung von unserem CRM-Beispielprojektmappe stehen zwei verbinden & Schaltflächen in der SharePoint-Multifunktionsleiste für die externe Kunden Liste exportieren: SharePoint-Arbeitsbereich und Herstellen einer Verbindung mit Outlook synchronisieren (siehe Abbildung 3 ). Wenn SharePoint-Arbeitsbereich 2010 auf dem Clientcomputer installiert ist, kann mit SharePoint-Arbeitsbereich Synchronisieren Synchronisieren von Listen und Dokumentbibliotheken auf dem Client mit einem einzigen Mausklick. Eine lokale zwischengespeicherte Kopie des Inhalts ist verfügbar, um den Benutzer in SharePoint-Arbeitsbereich, ob der Benutzer online oder offline ist. Wenn der Benutzer im Offlinestatus ist und ein Listenelement oder Dokument ändert und lokal speichert, wird das Listenelement oder Dokument mit SharePoint automatisch synchronisiert, wenn der Benutzer erneut wieder online ist.

image: Connect & Export Options in the SharePoint Ribbon

Abbildung 3 Connect & Export-Optionen in der SharePoint-Multifunktionsleiste

Dies ist eine Lösung Nein Code erforderlich. Daten werden in der SharePoint-Arbeitsbereich-Clientanwendung angezeigt, die in Abbildung 4 zugänglich gemacht. Und da vollständige CRUD-Methoden in der ECT definiert wurden, wird die Kundendaten in SharePoint-Arbeitsbereich vorgenommene Änderungen in der CRM-Datenbank aktualisiert.

image: Accessing External List Data in a SharePoint Workspace

Abbildung 4 zugreifen auf externe Listendaten von in SharePoint-Arbeitsbereich

Da wir den Artikeltyp Contact Office während der Konfiguration ECT Felder der CRM-Datenbank zugeordnet, kann SharePoint unserer externen Listendaten zu Outlook als systemeigene Kontaktelemente bereitstellen. Klicken Sie auf die Schaltfläche auf der Multifunktionsleiste Outlook herstellen, wird SharePoint diese externe Liste direkt mit Outlook synchronisieren. Erneut benötigt keinen Code, mit SharePoint-Daten, die in der Office-Client der Detailseite.

Die REST-API

Lösungen ohne Code, z. B. über eine SharePoint-Arbeitsbereichen und Outlook-Liste-Verbindung aktiviert, eignen sich hervorragend, aber es gibt einige Benutzerfunktionalität, die eine weitere angepasste Lösung benötigen. Um dies zu berücksichtigen, müssen wir für den Zugriff auf die Listendaten in Office-Anwendungen in einer Weise, die uns, die Lösung auf Weiter anzupassen ermöglicht.

Möglicherweise ist eine der einfachsten Möglichkeiten für Entwickler Zugriff auf SharePoint-Bibliothek Listen- und Daten über neue REST-API (listdata.svc). Die meisten Daten in SharePoint als einen REST-Endpunkt verfügbar gemacht. Der standardmäßige Speicherort für SharePoint Services ist _vti_bin, so einfach Geben Sie in Ihrem Browser die URL Ihrer Site und /_vti_bin.listdata.svc anfügen, wieder angezeigt werden Dienste ein ATOM-standard-Dokument, das auf der Website verfügbaren Hilfeauflistungen beschreibt (siehe Abbildung 5 ).

image: ATOM Services Document

Abbildung 5 ATOM Services Document

Beachten Sie, dass die Listen Kurs und CourseCategory vorhanden sind. Durch weitere /Course an den URL anhängt, können Sie die Kurse in der Liste abrufen, oder können Sie alle einem bestimmten Kurs abrufen, indem Sie eine Zahl angehängt. Beispielsweise wird den dritten Kurs zurückgegeben:

http://intranet.contoso.com/sites/SPC/_vti_bin/listdata.svc/Course(3)

Erweiterte Abfragen ermöglichen durch Anhängen des folgende Eigenschaft Filters:

?$filter=startswith(propertyname,'value')

Jedoch eine erweiterte Abfrage, die die Bedeutung ist hier eine, die die Kursen mit den zugehörigen CourseCategory Daten zurückgeben kann. Durch die folgenden an den URL der Site anfügen, können Sie die kombinierte Struktur der Kurs und CourseCategory in einer einzigen Nutzlast abrufen:

/_vti_bin.listdata.svc/Course?$expand=Category

Sie sehen diese in ein Word-add-in im nächsten Abschnitt implementiert.

Erstellen ein Word-Add-in

Sobald Sie wissen, wie nutzen Sie die REST-APIs Zugriff auf die Daten zu erhalten, können Sie Oberflächen die Daten in der Client-Anwendungen, in denen Benutzer eine umfassende Erfahrung Dokumenterstellung haben. In diesem Beispiel wird ein Word-add-in erstellt und diese Daten an dem Benutzer auf sinnvolle Weise präsentieren. Diese Anwendung haben eine Dropdownliste für die Kurs-Kategorien ein Listenfeld, das mit Kursen, die Kategorieauswahl und eine Schaltfläche zum Einfügen von Text, über den Kurs in das Word-Dokument lädt.

Erstellen Sie in Visual Studio 2010 ein neues Office 2010 Word Add-in-Projekt in c#.

Fügen Sie nun eine neue Datenquelle für den Dienst. Klicken Sie im Bereich Dienstverweis hinzufügen des Assistenten geben Sie den URL für die SharePoint-Website und hängen Sie /_vti_bin/listdata.svc daran an. Beispiel:

http://intranet.contoso.com/_vti_bin/listdata.svc

Geben Sie den URL ein, klicken Sie auf OK. Dies ruft die Metadaten für die SharePoint-Website. Wenn Sie auf "OK" klicken, wird WCF-Datendienste stark typisierte Klassen mit Entity Framework für Sie generiert. Diese abstrahiert vollständig entfernt die Tatsache, dass die Datenquelle SharePoint oder ein Producer OData, das Daten über das Open Data Protocol bereitstellt. Ab diesem Zeitpunkt verwenden Sie einfach die Daten als vertraute .NET Klassen.

Für die Benutzeroberfläche wird einen benutzerdefinierter Aufgabenbereich erstellt werden, der oben, unten, links oder rechts von der Anwendung enthält eine Benutzeroberfläche in Office-Anwendungen, die angedockt werden kann. Aufgabenbereiche können Windows Forms-Steuerelemente hinzugefügt werden, einschließlich des Windows Presentation Foundation (WPF)-Benutzersteuerelements, das hier verwendet werden.

Fügen Sie ein WPF-Benutzersteuerelement dem Projekt über das Dialogfeld Neues Element hinzufügen aus, und nennen Sie Sie CoursePicker. Wenn im Designer geöffnet wird, ersetzen Sie das Grid-Element mit in Abbildung 6 gezeigten XAML-Ausschnitt. Dies einfach fügt das Kombinationsfeld-Steuerelement, Schaltfläche und ListBox und legt einige Eigenschaften fest. Einige Ereignisse werden Sie später hinzufügen.

Abbildung 6 Word-Add-in-Benutzeroberfläche Markup

<StackPanel>

  <ComboBox 

    Name="cboCategoryLookup" Width="180" Margin="5" 

    HorizontalAlignment="Center" IsEditable="False" 

    ItemsSource="{Binding}"    

    DisplayMemberPath="CategoryName" 

    SelectedValuePath="CategoryName" />

  <Button Name="button1" 

    Content="Insert Course Information" Margin="5" />

  <ListBox Name="courseListBox" ItemsSource="{Binding}">

    <ListBox.ItemTemplate>

      <DataTemplate>

        <StackPanel>

          <StackPanel Orientation="Horizontal">

            <TextBlock Text="{Binding Path=CourseID}" 

              FontWeight="Bold" />

            <TextBlock Text=": " FontWeight="Bold" />

            <TextBlock Text="{Binding Path=Name}" />

          </StackPanel>

          <TextBlock Text="{Binding Path=Description}" 

            Margin="5 0 0 0" />

        </StackPanel>

      </DataTemplate>

    </ListBox.ItemTemplate>

  </ListBox>

</StackPanel>

Öffnen Sie die Datei CoursePicker.xaml.cs. Unmittelbar nach dem Namespace werden zwei hinzufügen mit Anweisungen, eine für den Dienstverweis, ServiceReference1 und eine für System.NET:

namespace Conf_DS {

    using ServiceReference1;

    using System.Net;

Das erste Bestellung von Unternehmen ist in der Klasse CoursePicker Instanziieren des Kontextobjekts Daten. Hier, übergeben Sie den URL Ihrer Site, durch die Bezeichnung _vti_bin/listdata.svc erneut angehängt:

public partial class CoursePicker : UserControl {

  Office2010DemoDataContext dc = new Office2010DemoDataContext(

    new Uri("http://intranet.contoso.com/sites/spc/_vti_bin/listdata.svc"));

Danach haben Sie eine Liste auf Klassenebene Variablen zum Zwischenspeichern von Kurs abgerufenen Elemente und Roundtrips zum Server zu speichern:

List<CourseItem> courses = null;

Der Code zum Abrufen der Kurse und Daten werden in die OnInitialized CourseCategory-Methode überschreiben. Zunächst legen Sie die angemeldeten Anmeldeinformationen an den Server übergeben. Die Kurs-Kategorien sind dann über das Kontextobjekt Daten abgerufen und in der Kategorie Kombinationsfeld-Steuerelement gebunden. Schließlich sind verwenden die Option erweitern, Kurse mit Ihrer zugeordneten Kategorie zurückgegeben und in das Listenobjekt Kurse geladen. Dadurch wird die Kurse für eine bessere Leistung lokal zwischenspeichern:

protected override void OnInitialized(EventArgs e) {

    dc.Credentials = CredentialCache.  

  DefaultCredentials;



    // Load Category dropdown list

    cboCategoryLookup.DataContext =  

      dc.CourseCategory;

    cboCategoryLookup.SelectedIndex = 0;



    // To cache data locally for courses 

    // Expand to retrieve the Category as well.

    courses = dc.Course.Expand("Category").ToList();



    base.OnInitialized(e);

  }

Sie müssen nun einige Ereignisse hinzuzufügen. CoursePicker Designer zurückkehren, und doppelklicken Sie auf die Schaltfläche, um die Schaltfläche erstellen click-Ereignis. Anschließend klicken Sie auf das ComboBox-Steuerelement und im Menü Eigenschaften, klicken Sie auf die Registerkarte Ereignisse, und doppelklicken Sie auf das SelectionChanged-Ereignis. Fügen Sie Code an den SelectionChanged-Ereignishandler, sodass er wie folgt aussieht:

private void cboCategoryLookup_SelectionChanged(

  object sender, SelectionChangedEventArgs e) {



  courseListBox.DataContext = from c in courses

    where c.Category.CategoryName == cboCategoryLookup.SelectedValue.ToString()

    orderby c.CourseID

    select c;

}

Hier eine einfache LINQ-Abfrage sucht das Listenobjekt Kurse (den Knoten mit Daten abgerufen wurden, mithilfe der Option Expand geladen) um alle Kurse mit einen Kategorienamen, der den Namen des im Kombinationsfeld ausgewählten Kurs Kategorie entspricht. Diese Aufträge auch die Ergebnisse in einer leeren Benutzerfreundlichkeit.

Fügen Sie abschließend Code-Ereignishandler der Schaltfläche im Listenfeld ausgewählte Element in ein CourseItem-Objekt umgewandelt.  Anschließend finden Sie die verschiedenen Datenelemente Exportnamen im Dokument an der Position der Einfügemarke und dem Benutzer werden soll:

private void button1_Click(

  object sender, RoutedEventArgs e) {



  CourseItem course = (CourseItem)courseListBox.SelectedItem;

  Globals.ThisAddIn.Application.Selection.InsertAfter(

    String.Format("{0}: {1} \n{2}\n", course.CourseID, 

    course.Name, course.Description));

}

Und das ist es, sehr einfachen Code für den Zugriff auf die Daten in SharePoint über WCF Data Services.

Öffnen Sie nun die Datei ThisAddIn.cs. Dies ist der Haupteinstiegspunkt für alle Add-Ins für Office. Hier fügen Sie Code zum Instanziieren des Aufgabenbereichs:

private void ThisAddIn_Startup(object sender, System.EventArgs e) {



  UserControl wpfHost = new UserControl();

  ElementHost host = new ElementHost();

  host.Dock = DockStyle.Fill;

  host.Child = new CoursePicker();

  wpfHost.Controls.Add(host);

  CustomTaskPanes.Add(wpfHost, "Training Courses").Visible = true;

}

CoursePicker WPF-Benutzersteuerelement kann nicht direkt für die Auflistung der benutzerdefinierten Task im Bereich Objekte hinzugefügt werden. Es muss in einem Steuerelement ElementHost gehostet werden die Brücke zwischen WPF-Steuerelemente und Windows Forms-Steuerelemente enthält. Beachten Sie, dass CoursePicker-Objekt wird als ein untergeordnetes Element von ElementHost-Objekt hinzugefügt, und das ElementHost-Objekt wird der benutzerdefinierte Aufgabenbereich Bereich Objekt-Auflistung hinzugefügt. Eine Office-Anwendung kann mehr als einen benutzerdefinierten Aufgabenbereich installiert haben und für den Benutzer zu einem beliebigen Zeitpunkt verfügbar, also der Aufgabenbereich für dieses Add-in nur werden in der Auflistung. Abbildung 7 zeigt das vollständige Add-in.

image: The Word Add-In at Work

Abbildung 7 Die Word-Add-in am Arbeitsplatz

Mit den Daten in der Office-Anwendung angezeigt wird können Sie die Lösung weiter nutzen, durch Hinzufügen von Code, der mit der Word-APIs interagiert. Beispielsweise können Sie Code hinzufügen, damit bei der Auswahl der Benutzer eines Kurs, der die Informationen eingefügt und im Dokument formatiert. Die Office-Anwendung-APIs sind umfangreiche und ermöglichen es Ihnen, eine benutzerdefinierte Lösung mehr Features hinzu, mit der Benutzer noch produktiver vornehmen können. Als Nächstes sehen wir ein Beispiel mit Word-Inhaltssteuerelemente mit einer clientseitigen SharePoint-Objektmodell verbunden.

Verwenden des Client-Objektmodells

Mithilfe der REST-APIs für den Zugriff auf die Daten ist eine einige Optionen zur Verfügung. Beispielsweise stehen auch drei neue APIs für SharePoint 2010, die ein konsistentes Programmiermodell für die JavaScript verwaltete .NET-Anwendungen und Silverlight-Clients bereitstellen. Diese drei Client-Objektmodelle Interaktion mit SharePoint unter Verwendung einer Teilmenge der Objekt-Modell Serverfunktionen und im Wesentlichen die Interaktion mit SharePoint auf Ebene der Websitesammlung und unter: Websites, Listen, Listitems, Inhaltstypen, Felder und externe Listen. Wenn Sie mit dem Server-Objektmodell vertraut sind, werden mit dem Client-Objektmodell vertraut sein.

Mithilfe des Client-Objektmodells veranschaulichen, verwenden wir die externe Liste mit CRM Debitoren ein auf Dokumentebene Word-add-in zu erstellen, die im Aktionsbereich mit dem Kunden geladen. Dies ist ein Fall, in dem Sie benötigen das Client-Objektmodell verwenden, da es sich bei der Liste Data Service Zugriff auf externe Listen zur Verfügung steht. In diesem Beispiel kann der Benutzer einen Kunden auswählen und seine Namens- und Adressinformationen Informationen in Inhaltssteuerelemente in einer Dokumentvorlage Zitat einfügen.

Im vorherige Beispiel Kategorie und Kurs wurde ein Add-in auf Anwendungsebene. Ein auf Anwendungsebene Word-add-in werden bei jedem Start von Word vorhanden. Auf Dokumentebene Add-Ins, jedoch ist, sind zu einem Dokument gebunden Sie und wird nur geladen Sie, wenn ein Dokument eines bestimmten Typs geöffnet wird. In diesem Fall wird die Liste externer Kunden nur für den Benutzer angezeigt werden, beim Arbeiten an einem Dokument Angebot.

Starten Sie durch das Erstellen einer neuen 2010 Word-Dokumentprojekt in Visual Studio. Des Assistenten müssen Sie wählen Sie entweder ein Standarddokument oder ein Dokument, das Sie bereits gespeichert haben. In meinem Fall verwendet ein Angebot Dokument bereits gespeichert wurde. Das Dokument wird in Visual Studio geöffnet, und Word wird der Dokument-Designer.

Die Toolbox können Sie um Steuerelemente direkt auf der Dokumentoberfläche des zu platzieren, wie Windows Forms-Anwendung. Hier fügen Sie Word-Inhaltssteuerelemente für Informationen zum Namen und Adresse. Diese Inhaltssteuerelemente werden mit Daten aus der Auswahl des Benutzers Kunden zur Laufzeit aufgefüllt werden.

Um ein Inhaltssteuerelement zu dem Dokument hinzufügen möchten, markieren Sie den Text auf das Dokument, das in das Inhaltssteuerelement umbrochen werden soll. Ziehen Sie ein RichTextContentControl aus Word-Steuerelemente in der Toolbox, und legen Sie es auf dem markierten Text. Geben Sie dann einen Namen für das Steuerelement und einen Wert für Text in den Eigenschaften. Hierzu für Kunden und Unternehmen Name, Adresse, Ort und Kunden-ID, Ihr Dokument so aussieht wie Abbildung 8 .

image: Creating the Quote Document

Abbildung 8 erstellen das Angebot Document

Da das Client-Objektmodell stark typisierte Daten vom Server nicht bereitstellt, müssen Sie eine Customer-Klasse zum Projekt hinzufügen. Zuordnen von Client-Objektmodell zurückgegebene Daten wird die Customer-Klasse verwendet:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



namespace CSOM_Quote {

  public class Customer     {

    public string CustomerID { get; set; }

    public string CompanyName { get; set; }

    public string ContactName { get; set; }

    public string Address { get; set; }

    public string City { get; set; }

  }

}

Client-Objektmodell verwenden, müssen Sie Microsoft.SharePoint.Client und Microsoft.SharePoint.Client.Runtime verweisen.

Wie bei dem vorherigen Beispiel erfolgt der Abruf in der Überschreibungsmethode OnIntitialized. Es gibt einige wichtige Unterschiede zwischen Programmieren mit der Client-Objektmodell und WCF Data Services. Erstens erwartet das Client-Objektmodell, dass Sie über Kenntnisse im Umgang mit SharePoint und seine Struktur haben. Mit WCF-Datendienste, ist abstrahiert und Sie nur die Daten. Zweitens ist das Objektmodell Client zurückgegebenen Daten nicht stark typisiert. Sie sind verantwortlich für das Abrufen von Daten in Objekte, die Sie für die LINQ-Abfragen und Datenbindung verwenden können.

Der Datenzugriffscode sind in Abbildung 9 aufgeführt. Der Clientkontext ist hier das zentrale Objekt. Übergeben Sie den Site-URL zum Erstellen einer neuen Instanz des Client-Kontext. Anschließend können Sie beginnen, Erstellen von SharePoint-Objekten, die die folgenden Schritte aus:

  1. Erstellen einer Website
  2. Erstellen Sie eine Auflistung von Sitelisten
  3. Abrufen einer Liste mit einem bestimmten Namen
  4. Alle Elemente in der Liste zu erhalten.
  5. Laden Sie die Abfrage in den Kontext
  6. Führen Sie die Abfrage

Abbildung 9 CRM-Add-In Access Datencode

protected override void OnInitialized(EventArgs e) {

  SPClientOM.ClientContext context =  new ClientContext("http://intranet.contoso.com/sites/spc");

  SPClientOM.Web site = context.Web;

  SPClientOM.ListCollection lists = site.Lists;

  var theBCSList = lists.GetByTitle("Customers");

  SPClientOM.CamlQuery cq = new SPClientOM.CamlQuery();

  IQueryable<SPClientOM.ListItem> bcsListItems =  theBCSList.GetItems(cq);

  bcsList = context.LoadQuery(bcsListItems);

  context.ExecuteQuery();



  var bcsCustomerData = 

    from cust in bcsList

    select new Customer {

      CustomerID = cust.FieldValues.ElementAt(1).Value.ToString(),

      ContactName = cust.FieldValues.ElementAt(2).Value.ToString() 

        + " " 

        + cust.FieldValues.ElementAt(3).Value.ToString(),

      CompanyName = cust.FieldValues.ElementAt(4).Value.ToString(),



      Address = cust.FieldValues.ElementAt(5).Value.ToString(),

      City = cust.FieldValues.ElementAt(6).Value.ToString(),  };



  foreach (var x in bcsCustomerData)  {

    Customer tempCustomer = new Customer();

    tempCustomer.CustomerID = x.CustomerID;

    tempCustomer.CompanyName = x.CompanyName;

    tempCustomer.ContactName = x.ContactName;

    tempCustomer.Address = x.Address;

    tempCustomer.City = x.City;



    customers.Add(tempCustomer);

  }



  customerListBox.DataContext = customers;

  base.OnInitialized(e);

}

Vor dem Aufruf der ExecuteQuery-Methode die vorherigen Anweisungen in die Warteschlange eingereiht und nur an den Server gesendeten beim Ausführen von Abfrage aufgerufen wird. Auf diese Weise können Sie Kontrolle über die Bandbreite und die Nutzdaten. Nachdem die Abfrage mit den Ergebnissen zurückgibt, ordnet die Daten der restliche Code ein Listenobjekt für Kunden, die an Debitor-Listenfeld-Steuerelement gebunden werden kann.

Auch in diesem Beispiel wird ein WPF-Benutzersteuerelement verwendet. Da der XAML-Code des vorherigen Beispiels ähnelt, ist nicht dieser hier angezeigt. Der Code zum Instanziieren eines Aktionsbereichs auf Dokumentebene, anstatt einen Aufgabenbereich auf Anwendungsebene ist jedoch etwas anders, wie Sie hier sehen können:

public partial class ThisDocument {

  private CustomersCRM CustomerActionPane =  new CustomersCRM();



  private void ThisDocument_Startup(object sender, System.EventArgs e) {

    ElementHost host = new ElementHost();

    host.Dock = DockStyle.Fill;

    host.Child = new CustomerPicker();

    CustomerActionPane.Controls.Add(host);

    this.ActionsPane.Controls.Add(CustomerActionPane);

  }

...

Beachten Sie, dass die Kunden Datumsauswahl WPF-Benutzersteuerelement hinzugefügt wird das ElementHost im Aktionsbereich Kunden ElementHost-Objekt hinzugefügt wird, steuert Auflistung und dann im Aktionsbereich Kunden der Controls-Auflistung von Aktionen im Bereich hinzugefügt.

Der letzte Schritt ist die Schaltfläche Hinzufügen klicken Sie auf Ereignis zum Auffüllen von Word-Inhaltssteuerelemente mit dem entsprechenden Namen und die Adressinformationen, wie in Abbildung 10 .

Abbildung 10 Hinzufügen-Schaltfläche Click-Ereignisses, um Word-Inhaltssteuerelementen

private void button1_Click(

  object sender, RoutedEventArgs e) {

  Customer customer = (Customer)customerListBox.SelectedItem;



  Globals.ThisDocument.wccContactName.Text = customer.ContactName;

  Globals.ThisDocument.wccCompanyName.Text = customer.CompanyName;

  Globals.ThisDocument.wccAddress.Text = customer.Address;

  Globals.ThisDocument.wccCity.Text = customer.City;

  Globals.ThisDocument.wccCustomerID.Text = customer.CustomerID;

}

Erstens umgewandelt Sie das Listenfeld ausgewählte Element ein Customer-Objekt.Anschließend werden Daten aus dem Customer-Objekt die Inhaltssteuerelemente zu füllen.Das Ergebnis sieht wie Abbildung 11 .

image: The CRM Add-In Within Word

Abbildung 11 Die CRM-Add-in in Word

Web Services als Social-Dienste

Bisher haben Sie gesehen, eine Reihe von Möglichkeiten, die Sie Office-Clientanwendungen SharePoint-Daten zugreifen können.Web Services verwendet die endgültige Technik betrachtet werden.SharePoint anbietet-Webdienste, als das Hauptverfahren Remotezugriff auf SharePoint-Daten.Webdienste in SharePoint 2010 erhalten, greifen Sie auf fast alle Funktionen in SharePoint Server.Einige der anderen Datentechnologien im Gegensatz zu haben Sie z. B. REST und die Client-Objektmodell über Web Services behandelt, die sowohl den Zugriff auf Daten und den Zugriff auf Verwaltungsfunktionen gesehen.

Alle Webdienste, die Sie gern werden noch dort, wie z. B. die Lists.asmx und Search.asmx Dienste.SharePoint-Webdienste werden als ASP.NET Web Services mit der Erweiterung .asmx implementiert, und die meisten der neuen Dienste in SharePoint 2010 werden auch als ASMX-Dienste geschrieben.Dies erfolgte hauptsächlich die umfangreichste Kompatibilität mit anderen Produkten und Tools haben.

Ein neuer Schwerpunkt von SharePoint-Webdienste ist Social-Dienste.Die Mitte aller soziale Anwendungen ist der Benutzer.SharePoint hat einen UserProfileService, die alle die Profilinformationen über einen Benutzer zugreifen kann.UserProfileService enthält die standardmäßigen Eigenschaften wie Name und Adresse, aber es enthält auch andere Eigenschaften wie Hobbys, Fähigkeiten, Schulen und Kollegen.Kollegen (oder Freunde wie in anderen öffentlichen Websites für soziale Eingabewerten sind) sind ein wichtiges Feature in der SharePoint-social-Struktur.

Ein weiterer wichtiger Aspekt der sozialen Anwendungen ist Personen Inhalt Meinung zu Sie auftreten.SharePoint hat einen SocialDataService, die Benutzern, den Tag, die Anzahl und Kommentar für Daten, Belege und Seiten innerhalb Ihrer Sites ermöglicht.

Der dritte wichtige soziale Aspekt von SharePoint ist Aktivitäten veröffentlichen und Abonnieren von Aktivitäten, die Ihren Kollegen zu generieren.SharePoint bietet ein ActivityFeed und APIs, um Aktivitäten als Feed zu veröffentlichen.

Da dies ein Artikel über das neue social Features in SharePoint nicht ist, es wird nicht auf diesen Detail gehen, aber bieten Sie einige wichtige Kontext für die Beispiele in diesem Artikel.SharePoint-Entwicklercenter , oder im Whitepaper “ Verwalten von Social Networking with Microsoft Office SharePoint Server 2007 ” Weitere Details angezeigt.

Erweitern von Outlook mit Webdiensten

Wir haben gesehen, wie SharePoint und Office bieten viele Möglichkeiten Wenn Sie die beste Möglichkeit zum Zugriff auf Daten für die Verwendung in Office-Anwendungen ermitteln möchten.Eine andere Möglichkeit beinhaltet SharePoint-Webdienste nutzen.In diesem Beispiel erstellen wir eine neue Outlook-Multifunktionsleiste, mit dem Sie alle Ihre SharePoint-Kollegen in Outlook als Kontakt-Elemente abrufen.Sie können sogar surface Profilbild des Benutzers in Outlook, genauso wie Sie daran gewöhnt sind, mit Microsoft Exchange-Kontakten zu sehen sind.

Zunächst erstellen ein neues Outlook-add-in in Visual Studio 2010.Wir werden dies in c# schreiben, jedoch könnten Sie Visual Basic verwenden, wenn Sie es vorziehen.In früheren Versionen Visual Basic hatte einen geringen Vorteil mit der Unterstützung für Features wie z. B. optionale Parameter, aber c# unterstützt jetzt, zu.

Die Multifunktionsleiste enthält eine konsistente und einfache Möglichkeit für die Interaktion mit allen Office-Anwendungen.Outlook 2010 enthält nun eine Multifunktionsleiste für den primären Bildschirm.In diesem Beispiel fügen Sie hier eine neue Multifunktionsleiste.Visual Studio 2010 erleichtert das Erstellen von Office-Multifunktionsleisten mit einer visuellen Ribbon Designer.Sie können einfach ziehen Steuerelemente aus der Toolbox auf der linken Seite, und legen Sie Sie auf die Entwurfsoberfläche.

In diesem Beispiel müssen Sie nur für einige Eigenschaften, wie z. B. die Beschriftung für die Registerkarte und der Gruppe festgelegt.Als Nächstes fügen Sie ein Button-Steuerelement auf die Oberfläche des.Sobald Sie auf eine Schaltfläche der Multifunktionsleiste Gruppe hinzugefügt haben, können Sie die Größe festlegen, um große und ein Bild für die Schaltfläche festlegen.Die Multifunktionsleiste sieht ähnlich wie Abbildung 12 aus.

image: Creating a New Outlook Ribbon

Abbildung 12 Erstellen Sie eine neue Outlook-Multifunktionsleiste

Der letzte Schritt ist festgelegt, die Eigenschaft, um festzustellen, wann die Multifunktionsleiste angezeigt wird.In der Standardeinstellung wird die Multifunktionsleiste auf dem Mail-Explorer angezeigt.Dies ist das Fenster, angezeigt wenn Sie eine e-Mail-Nachricht öffnen.In diesem Beispiel soll die Multifunktionsleiste auf dem primären Bildschirm angezeigt.Wählen Sie die Multifunktionsleiste und Microsoft.Outlook.Explorer RibbonType-Eigenschaft festgelegt.Sie können sehen, es gibt eine Reihe von Bereichen, in denen die Multifunktionsleiste, einschließlich der e-Mail- und Kontakt-Explorer erscheinen.

Anschließend doppelklicken Sie auf der Multifunktionsleiste Schaltfläche zum Erstellen einer Code-Behind-Ereignis-Behandlungsroutine.Dies ist das Ereignis, das Sie zum Erstellen von Outlook-Kontakten verwenden.

Sie nun können den Code hinzufügen, der einen Kontakt in Outlook erstellt.Visual Studio 2010 macht dies tun.Ich einfacher es, das Problem in mehrere kleinere Teile zu unterteilen.Erstens Sie Outlook-add-in erstellt und dann die Multifunktionsleiste erstellen.Nach jedem dieser Schritte sicher, dass Sie F5 drücken, um die Anwendung kompiliert und ausgeführt.Jetzt können Sie einen Outlook-Kontakt mit hartcodierten Werten erstellen.Vergewissern Sie sich, dass dies funktioniert, können Sie den Code hinzufügen, der SharePoint aufruft.Bei jedem Schritt erneut überprüfen Sie, dass alles ordnungsgemäß funktioniert, bevor mit dem nächsten Schritt fortfahren.

Abbildung 13 zeigt den Code zum Erstellen eines neuen Kontakts mit hart codiert.Hier wird die CreateItem-Methode, um ein neues ContactItem-Objekt erstellen.Dann legen Sie die Eigenschaften für das ContactItem, und rufen Sie die Save-Methode, um die Änderungen zu übernehmen.

Abbildung 13 Standardcode zum Erstellen eines Kontakts

Outlook.ContactItem newContact = Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olContactItem);



newContact.FirstName = "Paul";

newContact.LastName = "Stubbs";

newContact.Email1Address = "pstubbs@microsoft.com";

newContact.CompanyName = "Microsoft";

newContact.JobTitle = "Technical Evangelist";

newContact.CustomerID = "123456";

newContact.PrimaryTelephoneNumber = "(425)555-0111";

newContact.MailingAddressStreet = "1 Microsoft Way";

newContact.MailingAddressCity = "Redmond";

newContact.MailingAddressState = "WA";

newContact.AddPicture(@"C:\me.png");

newContact.Save();

Die nur sehr schwierig ist, dass die Methode zum Festlegen des Kontaktbild ist die AddPicture-Methode aufrufen, die einen Pfad zu einem Bild auf der Festplatte hat. Dies ist problematisch, da Bilder von SharePoint abgerufen werden soll. Sehen Sie hierzu im nächsten Abschnitt. Nachdem Sie sichergestellt haben, dass der Code funktioniert und einen Kontakt in Outlook erstellt wird, können Sie aufrufen, SharePoint und real Kontakte hinzufügen.

Verwenden die User-Profildienst

UserProfileService handelt es sich um eine SharePoint-Webdienst mit Profilinformationen, einschließlich einer Liste Ihrer Kollegen und Ihre Profilinformationen zugreifen können. Um diesen Dienst zu verwenden, starten Sie durch Hinzufügen eines Verweises zum Projekt. Da es einen Webdienst und keinen WCF-Dienst handelt, müssen Sie die erweiterte Registerkarte im Dialogfeld Dienst hinzufügen, klicken Sie auf die Schaltfläche Webdienst hinzufügen. Dadurch wird das alte Webdienst hinzufügen-Dialogfeld, das Sie sich leicht merken von Visual Studio 2005 geöffnet.

Nachdem den Verweis hinzugefügt wurde, können Sie den Code zum Abrufen von Ihren Kollegen hinzufügen:

// Instantiate the Web service.

UserProfileService userProfileService = new UserProfileService();



// Use the current user log-on credentials.

userProfileService.Credentials = System.Net.CredentialCache.DefaultCredentials;

Dieser Code erstellt eine Instanz des Dienstes und Ihre aktuellen Anmeldeinformationen an den Dienst übergibt. Als nächstes rufen Sie die GetUserColleagues-Methode und übergeben den Benutzer aus, dem Sie für Kollegen abrufen möchten. Ein Array von Objekten ContactData wird zurückgegeben:

ContactData[] contacts = userProfileService.GetUserColleagues("contoso\\danj");

Wir können jetzt alle Objekte ContactData durchlaufen, die Profildaten für die Kollegen des Benutzers in SharePoint darstellen. Wir rufen die erweiterten Eigenschaften durch Aufrufen der GetUserProfileByName-Methode, die ein Array von PropertyData mit Schlüssel-Wert-Paare für jeden Kollegen zurückgibt:

// Add each Colleague as an Outlook Contact

foreach (ContactData contact in contacts) {

  // Get the users detailed Properties

  PropertyData[] properties = userProfileService.GetUserProfileByName(contact.AccountName);



  // Create a new Outlook Contact

  Outlook.ContactItem newContact = Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olContactItem);

Nachdem wir die konvertieren Schlüssel/Wert-Paare in Kontaktinformationen:

// Set the Contact Properties

newContact.FullName = contact.Name;

newContact.FirstName = properties[2].Values[0].Value.ToString();

newContact.LastName = properties[4].Values[0].Value.ToString();

newContact.Email1Address = properties[41].Values[0].Value.ToString();

...

Schließlich, wir nehmen Kontakte Foto und den neuen Kontakt speichern:

// Download the users profile image from SharePoint

SetContactImage(properties, newContact);



newContact.Save();

Das letzte Glied in der werden den Kontakt Bild vom SharePoint abgerufen. Eine der erweiterten Eigenschaften enthält einen Pfad zu einer Miniaturansicht der Profilbild des Benutzers. Sie müssen dieses Bild in eine temporäre Datei auf der Festplatte herunterladen, damit die Outlook-API das ContactItem-Objekt hinzugefügt werden können:

private static void SetContactImage(

  PropertyData[] properties, 

  Outlook.ContactItem newContact){



  // Download image to a temp file

  string userid = properties[16].Values[0].Value.ToString();

  string imageUrl = properties[15].Values[0].Value.ToString();

  string tempImage = string.Format(@"C:\{0}.jpg", userid);

  WebClient Client = new WebClient();

  Client.Credentials = CredentialCache.DefaultCredentials;

  Client.DownloadFile(imageUrl, tempImage);

  newContact.AddPicture(tempImage);

}

Das war's!Jetzt haben Sie ein Outlook-add-in-Band, die in Outlook-Kontakte soziale Daten abrufen SharePoint aufruft.Beim Ausführen der Anwendung wird ein ContactItem, aufgefüllt mit SharePoint-Daten, einschließlich Profilinformationen und Image des Benutzers angezeigt.

Zusammenfassung

Sie haben nun gesehen, wie einfach es ist, beim Abrufen von Daten aus SharePoint in Office-Clients.Wir haben Sie eine Vielzahl von Optionen von Lösungen ohne Code zu höchst anpassungsfähige Lösungen mit c# oder Visual Basic dargestellt.

Mit WCF Data Services, SharePoint-Listendaten Zugriff auf bietet ein allgemeines Muster für .NET-Entwickler, die schnell und einfach zu implementieren.Das Client-Objektmodell bietet die Möglichkeit, Zugriff auf externe SharePoint Listet und öffnet eine Welt Chancen für das Onlineschalten von LOB-Daten in Office.Und schließlich SharePoint-Webdienste ermöglicht den flexibelsten Zugriff auf Daten, erfordert aber auch etwas mehr Engagement hinsichtlich der Codierung und Test.

Daten in SharePoint verfügbar machen, die Benutzern als Listen ist ein wichtiger Schritt, wie Sie eine großartige Erfahrung im Browser ermöglicht.Erstellen Sie einen Schritt weiter, können Sie eine Vielzahl von Optionen für Daten Zugriff auf die Daten dann in Office-Anwendungen, die den Benutzern vertraut sind, schalten nutzen.Visual Studio 2010 wird all dies viel einfacher erstellen, Debuggen und bereitstellen.Wie Sie sehen können, stellen diese Entwicklung neuer und wichtige Funktionen, die Sie mit neue Produktversionen nutzen können.

Weitere Schulungen können Informationen und Beispiele online, in der Entwickler von SharePointOffice-Ressourcen gefunden werden.

Donovan Follette  arbeitet ein Microsoft technischen Evangelist mit Technologien wie Active Directory Lightweight Directory Services, und Active Directory Federation Services.Er konzentriert sich jetzt auf die Office-Entwicklung und integrierte Lösungen mit SharePoint 2010.Besuchen Sie seinen Blog unter blogs.msdn.com/b/donovanf/-.

Paul Stubbs ist eine technische Microsoft-Evangelist, konzentriert sich auf die Informationen Worker-Entwicklercommunity für SharePoint "und" Office "," Silverlight "und" Web 2.0 soziale Netzwerke. Er hat drei Bücher über die Entwicklung von Lösungen mit Office, SharePoint und Silverlight verfasst. Lesen seinen Blog unter blogs.msdn.com/b/pstubbs/-.

*Dank an den folgenden technischen Experten für die Überprüfung der in diesem Artikel:*John Durant