Freigeben über


Arbeiten mit komplexen Datentypen

Letzte Änderung: Freitag, 16. April 2010

Gilt für: SharePoint Server 2010

Inhalt dieses Artikels
Übersicht über komplexe Typen in BCS
Komplexe Formatierung externer Inhaltstypen von BCS über die Zeichenfolgenformatierung
SharePoint-kompatible Dienstschicht
.NET-Verbindungsassemblys
Erweitern des Systems für externe Listentypen über benutzerdefinierte Feldtypen
Anpassen von SharePoint-Listenformularen
Anpassen von InfoPath-Formularen

Mit Microsoft Business Connectivity Services (BCS) können komplexe Datentypen auf verschiedene Weise in externen Listen angezeigt werden. Komplexe Typen sind Datentypen, die andere Untertypen enthalten, wie z. B. eine Adresse, die sich aus Feldern für Straße, Ort, Bundesland/Kanton und Postleitzahl zusammensetzt. Obwohl komplexe Typen vom Schema für externe Inhaltstypen unterstützt werden, können komplexe Typen standardmäßig nicht in der Darstellungsschicht in Microsoft SharePoint 2010 und Microsoft Office 2010 angezeigt werden. Deshalb müssen Sie zusätzliche Schritte ausführen, um das Anzeigen dieser komplexen Typen zu ermöglichen. Dieses Thema enthält eine Übersicht über komplexe Typen in Business-Konnektivitätsdienste (Business Connectivity Services) und verschiedene Lösungen zum Anzeigen von komplexen Typen in der Benutzeroberfläche.

Übersicht über komplexe Typen in BCS

Daten in externen Systemen werden häufig über Webdienste mit komplexen Meldungsstrukturen verfügbar gemacht. Parameterdatenstrukturen mit beinahe jeder Komplexität werden zwar vom Schema für externe Inhaltstypen unterstützt, aber komplexe Typen können Inkompatibilitäten mit Präsentationstechnologien in SharePoint und Microsoft Office verursachen.

Externe Inhaltstypen definieren stereotype Vorgänge, von denen viele eine technisch komplexe Parameterstruktur erfordern. Mit einer bestimmten Suchmethode (wird in SharePoint Designer auch als Elementlesevorgang bezeichnet) muss ein einzelner komplexer Typ zurückgegeben werden, der die Felder für einen externen Inhaltstyp enthält, wie z. B. der Typ Customer mit den Feldern CustomerID, Name und PhoneNumber. Die untergeordneten Elemente dieser Struktur sind den Spalten einer externen Liste zugeordnet. Die meisten externen Inhaltstypen enthalten eine Suchmethode, die eine Auflistung desselben Typs wie die bestimmte Suchmethode zurückgibt. Probleme ergeben sich, wenn eines der Felder untergeordnete Elemente aufweist oder wenn ein Feld einen von den Präsentationstechnologien nicht unterstützten Typ darstellt. Beispielsweise, wenn ein Feld CustomerAddress der Struktur Customer hinzugefügt wird, die wiederum untergeordnete Elemente für Street, City, State und PostalCode enthält.

Eine der primären Benutzeroberflächenkomponenten zum Anzeigen externer Daten in SharePoint ist die externe Liste. Standardmäßig ist eine externe Liste eine einfache, zeilenbasierte Darstellung von Daten. Ohne zusätzliche Maßnahmen seitens eines Entwicklers werden komplexe Typen und einfache Typen, die nicht im SharePoint-Listentypsystem unterstützt werden, in der Listenansicht ausgelassen.

Das Schema für externe Inhaltstypen von Business-Konnektivitätsdienste (Business Connectivity Services) unterstützt die Angabe komplexer Formatierung für schreibgeschützte Szenarien, wenn der komplexe Typ mithilfe einer Microsoft .NET Framework-Formatzeichenfolge in eine einfache Zeichenfolge konvertiert werden kann (siehe Komplexe Formatierung externer Inhaltstypen von BCS über die Zeichenfolgenformatierung weiter unten in diesem Thema). Falls die schreibgeschützte Unterstützung nicht ausreichend ist oder der komplexe Typ mit dieser Methode nicht konvertiert werden kann, bietet SharePoint 2010 die Möglichkeit zum Erstellen benutzerdefinierter Feldtypen, mit denen das Rendering- und Bearbeitungsverhalten in externen Listen und Listenelementformularen gesteuert werden kann.

Formulare sind die primäre Benutzeroberfläche für externe Listenelemente. Komplexe Typen stellen eine Herausforderung für das Generieren von Formularen dar, da es schwierig ist, sie automatisch zu entwerfen und gleichzeitig dafür zu sorgen, dass sie einigermaßen optisch ansprechend sind. Externe Listen können SharePoint-Listenformularen (basierend auf ASP.NET) oder Microsoft InfoPath 2010-Formularen zugeordnet werden. In den Abschnitten Anpassen von SharePoint-Listenformularen und Anpassen von InfoPath-Formularen in diesem Thema wird beschrieben, wie komplexe Typen in diesen Formularen angezeigt werden.

Komplexe Formatierung externer Inhaltstypen von BCS über die Zeichenfolgenformatierung

In Fällen, in denen der komplexe Typ in der externen Liste schreibgeschützt ist und in eine Zeichenfolge konvertiert werden kann, unterstützt Business-Konnektivitätsdienste (Business Connectivity Services) die Angabe einer Formatzeichenfolge für den Typdeskriptor, um den komplexen Typ in einer externen Liste oder in einem Elementformular als Zeichenfolge zu rendern. Es folgt ein Beispiel für die Verwendung der Zeichenfolgenformatierung zum Konvertieren des zuvor erwähnten komplexen Typs Customer.

<TypeDescriptor TypeName="CustomerAddress" IsCollection="false" Name="CustomerAddresses" > 
   <TypeDescriptors> 
      <TypeDescriptor TypeName=" CustomerAddress " Name="CustomerAddress" > 
         <Properties> 
            <Property Name="ComplexFormatting" Type="System.String" /> 
            <Property Name="FormatString" Type="System.String">{0}, {1}, {2} {3}</Property> 
         </Properties> 
         <TypeDescriptors> 
            <TypeDescriptor TypeName="System.String" Name="Street"/> 
            <TypeDescriptor TypeName="System.String" Name="City" /> 
            <TypeDescriptor TypeName="System.String" Name="StateProvince" /> 
            <TypeDescriptor TypeName="System.String" Name="PostalCode" /> 
         </TypeDescriptors> 
     </TypeDescriptor> 
   </TypeDescriptors> 
</TypeDescriptor>

SharePoint-kompatible Dienstschicht

In Bezug auf die Architektur besteht der optimale Ansatz für das Arbeiten mit einem komplexen Datentyp darin, eine Dienstebene mit einer einfachen Parameterstruktur innerhalb der Grenzen der Darstellungsschicht zu erstellen. Wenn im Beispiel aus dem vorherigen Abschnitt der Webdienst alle Felder zurückgibt, die die Kunden auf derselben Ebene darstellen, kann SharePoint Kundenelemente ohne jegliche Änderung rendern und bearbeiten.

Sie müssen jedoch diese Vorgehensweise und den damit verbundenen Mehraufwand für das Schreiben, Hosten und Verwalten von benutzerdefiniertem Code einerseits und den Mehraufwand für das Verwenden komplexer Typen in den Darstellungsschichten für jede Anwendung mithilfe eines komplexen Diensts andererseits gegeneinander abwägen. In vielen Unternehmensbereitstellungen ist bereits eine Dienstschicht vorhanden, speziell für Geschäftsentitäten wie z. B. einen Kunden oder ein Produkt, die in vielen Anwendungen vielseitig eingesetzt werden. Die Kosten für das Hinzufügen von Methoden für die Verwendung mit SharePoint 2010 könnten niedriger sein als die Kosten für die Verwendung komplexer Typen in jeder Anwendung.

.NET-Verbindungsassemblys

Wenn es nicht möglich ist, eine Dienstschicht hinzuzufügen oder zu erweitern, kann in SharePoint 2010 für die Definition des externen Inhaltstyps eine Klasse verwendet werden, mit der die einem Vorgang für externe Inhaltstypen zugrunde liegende Geschäftslogik gekapselt wird. Die vereinfachte Schnittstelle des externen Inhaltstyps können Sie mit dem Business Data Connectivity Designer in Visual Studio 2010 definieren und jede benötigte Aggregations- und Typkonvertierungslogik in dem von diesem Tool generierten Rumpfcode implementieren. Nach Abschluss der Implementierung können Sie mit Visual Studio ein Lösungspaket (WSP-Datei) generieren, das die Definition für den externen Inhaltstyp und die Assembly, die in SharePoint 2010 importiert werden kann, enthält.

HinweisHinweis

Farmadministratorrechte sind zum Importieren dieses Pakettyps erforderlich, da der dem externen Inhaltstyp zugrunde liegende Code im vollständig vertrauenswürdigen Modus ausgeführt wird. Weitere Informationen zum Erstellen von .NET-Verbindungsassemblys finden Sie im Video Verwenden von SharePoint Business Data Connectivity Designer in Visual Studio 2010 von Boris Scholl.

Da es nicht immer möglich ist, die Verhaltensweise von Back-End-Diensten zu ändern, bietet SharePoint 2010 auch mehrere Möglichkeiten zum Erweitern der Darstellungsschicht für komplexe Typen.

Erweitern des Systems für externe Listentypen über benutzerdefinierte Feldtypen

Die SharePoint 2010-Listeninfrastruktur unterstützt eine Reihe allgemeiner Datentypen, die für die gängigsten Dateneingabeszenarien ausreichend sind. Für komplexe Geschäftsdatenelemente wie z. B. Adressen, gibt es in SharePoint 2010 die Möglichkeit, benutzerdefinierte Feldtypen zu definieren, die in allen Websites in einer SharePoint-Farm verfügbar gemacht werden können. Die Definitionsdatei für benutzerdefinierte Feldtypen spielt für einen benutzerdefinierten Feldtyp eine zentrale Rolle. Hiermit wird definiert, wie ein Feld in den Listen- und Elementansichten gerendert werden soll. Außerdem werden in dieser Definitionsdatei Variableneigenschaften und ein Verweis auf die Assembly definiert, mit der der Feldtyp implementiert wird. Die Feldklasse erbt von SPField und stellt spezielle Felder basierend auf dem benutzerdefinierten Feldtyp dar. Die Feldklasse definiert die Funktionen (z. B. das Sortieren) einer Spalte basierend auf dem benutzerdefinierten Feld, sie definiert das Verhalten einer Zelle innerhalb einer Liste und der Inhaltsdatenbank und kann benutzerdefinierte Überprüfungslogik implementieren.

Die meisten komplexen benutzerdefinierten Feldtypen erfordern auch eine Renderingsteuerelement-Klasse, eine Renderingvorlage oder eine Klasse für einen benutzerdefinierten Wert. Weitere Informationen zu benutzerdefinierten Feldtypen finden Sie unter Benutzerdefinierte Feldtypen und Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Feldtyps.

Nachdem Sie den benutzerdefinierten Typ definiert haben, können Sie darauf verweisen, indem Sie wie im folgenden Beispiel veranschaulicht Typdeskriptoren in der Definition für den externen Inhaltstyp verwenden.

<TypeDescriptor TypeName="Customer.Address” Name="CustomerAddress" DefaultDisplayName="Customer Address"> 
   <Properties> 
       <Property Name="SPCustomFieldType" Type="Customer.Address">Customer Address</Property> 
   </Properties> 
</TypeDescriptor> 

Mit dieser Definition von Typdeskriptoren kann mit einer externen Liste basierend auf dem externen Inhaltstyp festgelegt werden, dass der Typdeskriptor CustomerAddress auf einen benutzerdefinierten Feldtyp verweist, und er kann entsprechend gerendert werden.

Anpassen von SharePoint-Listenformularen

Wenn Sie eine neue externe Liste erstellen, werden von SharePoint 2010 automatisch Formulare generiert, um das Erstellen, Bearbeiten und Anzeigen von Listenelementen zu ermöglichen. SharePoint-Formulare basieren auf .NET Framework-Steuerelementen und nutzen deren Erweiterungsmöglichkeiten, mit denen komplexe Typen ordnungsgemäß gerendert werden können. Die in diesem Thema beschriebenen benutzerdefinierten Feldtypen sind der für komplexe Typen am häufigsten verwendete Erweiterungsmechanismus. Für einfachere Fälle können Sie möglicherweise ein systemeigenes SharePoint Foundation-Feld erweitern. Weitere Informationen zur Anpassung von Listenformularen finden Sie unter Listenformulare.

Anpassen von InfoPath-Formularen

SharePoint 2010 unterstützt auch die Verwendung von InfoPath-Formularen zum Anzeigen und Bearbeiten von Listenelementen. In InfoPath gibt es Features, mit denen Benutzer, die keine Entwickler sind, auf einfache Weise ansprechende Formulare mit leistungsstarker Überprüfung und bedingter Formatierung erstellen können. InfoPath-Formulare bieten im Vergleich zu Standardlistenformularen den weiteren Vorteil, dass sie im Browser, als eigenständige Formulare oder in Rich-Clients verwendet werden können. InfoPath-Formulare sind die Formulartechnologie, die für die Offlinearbeit mit externen Listendaten in Microsoft SharePoint Workspace 2010 verwendet wird. In SharePoint 2010 können Sie nicht mit dem Erstellen von InfoPath-Formularen für externe Listen in InfoPath Designer beginnen. Stattdessen generieren Sie InfoPath-Formulare in SharePoint Designer entweder im Designer für externe Listen oder im Designer für externe Inhaltstypen. Anschließend können Sie die Formulare in InfoPath Designer anpassen.

Für externe Inhaltstypen, die komplexe Typen enthalten, ist es standardmäßig schwierig, ein optisch ansprechendes Layout zu generieren. Deshalb wird vom Formulargenerator ein leeres Formular generiert. InfoPath unterstützt jedoch komplexe Typen im Designer, weshalb Sie ein generiertes Formular in InfoPath Designer im Designer für externe Listen in SharePoint Designer öffnen können. Die benutzerdefinierten Typen sind in der Feldliste verfügbar (siehe Abbildung 1) und können manuell formatiert werden.

Abbildung 1. Feldliste in InfoPath Designer

Feldliste in InfoPath Designer

Nach Abschluss der Anpassungen müssen Sie das aktualisierte Formular mithilfe der Schaltfläche Schnell veröffentlichen im Menü Datei wieder in der externen Liste veröffentlichen.

Abbildung 2. Schaltfläche "Schnell veröffentlichen" in InfoPath Designer

Schaltfläche 'Schnell veröffentlichen' in InfoPath Designer