Freigeben über


Exemplarische Vorgehensweise: Erstellen eines mobilen Adapters

Letzte Änderung: Freitag, 1. April 2011

Gilt für: SharePoint Foundation 2010

In dieser exemplarischen Vorgehensweise wird das Erstellen eines mobilen Adapters für das UserTasksWebPart erläutert, das im Lieferumfang von Microsoft SharePoint Foundation enthalten ist. Eine ausführlichere Erläuterung des Erstellungsprozesses für einen mobilen Webpartadapter finden Sie unter Gewusst wie: Erstellen eines mobilen Adapters.

Voraussetzungen

Lesen Sie SharePoint Foundation-Entwicklungstools und die untergeordneten Themen, und führen Sie die empfohlenen Aufgaben zum Einrichten der Entwicklungsumgebung aus. In dieser exemplarischen Vorgehensweise wird insbesondere vorausgesetzt, dass Sie die empfohlenen Aufgaben in Einrichten von Emulatoren für mobile Geräte, Gewusst wie: Erstellen eines Tools zum Abrufen des öffentlichen Schlüssels einer Assembly und Vorgehensweise: Hinzufügen von Toolverzeichnissen zur PATH-Umgebungsvariablen ausgeführt haben.

Entwickeln des Adapters

In den folgenden Verfahren wird der Erstellungsprozess für einen mobilen Adapter erläutert.

Einrichten des Projekts für den mobilen Adapter

  1. Wählen Sie in Visual Studio im Menü Datei die Option Neu und dann Projekt aus.

  2. Wählen Sie im Dialogfeld Neues Projekt im Feld Projekttypen die Option Visual C# aus, wählen Sie im Feld Vorlagen die Option Klassenbibliothek aus, und geben Sie dann in das Feld Name den Begriff MobileAdapters ein. Klicken Sie auf OK.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise, klicken Sie auf Verweis hinzufügen, und wählen Sie dann bei gedrückter STRG-TASTE im Dialogfeld Verweis hinzufügen auf der Registerkarte .NET die Optionen System.Web, System.Web.Mobile und Microsoft.SharePoint aus. Klicken Sie auf OK.

  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie Eigenschaften aus.

  5. Geben Sie auf der Registerkarte Anwendung des Dialogfelds Eigenschaften den Begriff MyCompany.SharePoint.WebPartPages.MobileAdapters als Wert für Assemblyname und MyCompany.SharePoint.WebPartPages als Wert für Standardnamespace ein. Ersetzen Sie MyCompany durch den Unternehmensnamen. Ersetzen Sie in dieser exemplarischen Vorgehensweise MyCompany immer durch den Unternehmensnamen.

  6. Klicken Sie auf Assemblyinformationen, und nehmen Sie bei Bedarf Änderungen im Dialogfeld Assemblyinformationen vor. In dieser exemplarischen Vorgehensweise wird vorausgesetzt, dass Sie die Assembly und Dateiversionen unverändert bei 1.0.0.0 belassen und dass die GUID nicht geändert wird.

  7. Öffnen Sie die Registerkarte Signatur, und wählen Sie dann Assembly signieren aus.

  8. Wählen Sie aus dem Dropdown-Listenfeld Schlüsseldatei mit starkem Namen auswählen die Option <Neu...> aus.

  9. Geben Sie im Dialogfeld Schlüssel für einen starken Namen erstellen den Namen MobileAdapters.snk in das Feld Schlüsseldateiname ein, und stellen Sie dann sicher, dass das Kontrollkästchen **Schützen...**nicht aktiviert ist. Klicken Sie auf OK.

  10. Öffnen Sie die Registerkarte Buildereignisse, und geben Sie den folgenden Code in das Feld Befehlszeile für Postbuildereignis ein. Mit diesem Code wird eine Batchdatei ausgeführt, die in einem späteren Schritt erstellt wird.

    cd "$(ProjectDir)"
    MobileAdapterPostBuild
    
  11. Klicken Sie auf der Symbolleiste auf die Schaltfläche zum Speichern aller Dateien.

  12. Benennen Sie im Projektmappen-Explorer die Datei Class1.cs in UserTasksWebPartMobileAdapter.cs um.

Erstellen des Adaptersteuerelements

  1. Öffnen Sie die Datei UserTasksWebPartMobileAdapter.cs des Projekts, falls noch nicht geschehen, und fügen Sie die folgenden using-Anweisungen hinzu.

    using System.Web.UI.MobileControls;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebPartPages;
    using Microsoft.SharePoint.Utilities;
    
    Imports System.Web.UI.MobileControls
    Imports Microsoft.SharePoint
    Imports Microsoft.SharePoint.WebPartPages
    Imports Microsoft.SharePoint.Utilities
    
  2. Ändern Sie den Namespace zu MyCompany.SharePoint.WebPartPages.MobileAdapters.

  3. Ersetzen Sie die gesamte Class1-Deklaration durch den folgenden Code.

    public class UserTasksWebPartMobileAdapter : WebPartMobileAdapter
    {
    
    }// end UserTasksWebPartMobileAdapter class
    
    Public Class UserTasksWebPartMobileAdapter
    Inherits WebPartMobileAdapter
    
    End Class ' end UserTasksWebPartMobileAdapter class
    

    Beachten Sie, dass die neue Klasse von WebPartMobileAdapter erbt.

  4. Fügen Sie die folgende Deklaration einer Außerkraftsetzung der CreateControlsForDetailView()-Methode hinzu.

    protected override void CreateControlsForDetailView()
    {
    
    } // end CreateControlsForDetailView
    
    Protected Overrides Sub CreateControlsForDetailView()
    
    End Sub ' end CreateControlsForDetailView
    
  5. Beginnen Sie mit der Implementierung von CreateControlsForDetailView() mit den folgenden Zeilen. Mit diesem Code wird eine nach unten zeigende Pfeilspitze links vom Webparttitel erstellt. Durch Übergeben von LinkToSummaryView an die Hilfsmethode CreateWebPartIcon(WebPartMobileAdapter.WebPartIconLink) wird diese Pfeilspitze als Wechselschalter auf Geräten festgelegt, deren Browser CSS und ECMAScript 1.0 oder höher unterstützt. Wenn ein Benutzer darauf klickt, wird das Webpart in die Zusammenfassungsansicht reduziert. (Falls der Browser keine Unterstützung für CSS und ECMAScript 1.0 oder höher bietet, wird ein anderes Symbol gerendert, und wenn auf dieses Symbol geklickt wird, wird eine Seite mit einer Zusammenfassungsansicht des Webparts geöffnet.

    Image iconImage = this.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView);
    iconImage.BreakAfter = false;
    this.Controls.Add(iconImage);
    
    Dim iconImage As Image = Me.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView)
    iconImage.BreakAfter = False
    Me.Controls.Add(iconImage)
    
  6. Fügen Sie die folgenden Zeilen hinzu, um den Standardtitel des Webparts für Benutzeraufgaben zu rendern: "User Tasks" in Fettdruck.

    Label titleLabel = this.CreateWebPartLabel();
    this.Controls.Add(titleLabel);
    
    Dim titleLabel As Label = Me.CreateWebPartLabel()
    Me.Controls.Add(titleLabel)
    
  7. Fügen Sie die folgenden Zeilen hinzu, um die Verweise auf die Objekte zu erfassen, auf die im Code in der Renderlogik verwiesen wird. Ersetzen Sie CustomSite durch den Namen der Website, auf die Sie von einem mobilen Gerät zugreifen. Dies kann eine beliebige Website sein, die eine standardmäßige SharePoint Foundation-Aufgabenliste enthält.

    SPSite siteCollection = SPContext.Current.Site;
    SPUser currentUser = SPContext.Current.Web.CurrentUser;
    SPList taskList = siteCollection.AllWebs["CustomSite"].Lists["Tasks"];
    SPListItemCollection allTasks = taskList.GetItems(taskList.DefaultView);
    
    Dim siteCollection As SPSite = SPContext.Current.Site
    Dim currentUser As SPUser = SPContext.Current.Web.CurrentUser
    Dim taskList As SPList = siteCollection.AllWebs("CustomSite").Lists("Tasks")
    Dim allTasks As SPListItemCollection = taskList.GetItems(taskList.DefaultView)
    
  8. Fügen Sie die folgende LINQ-Abfrage ein. Mit der where-Klausel wird sichergestellt, dass nur die Aufgaben des aktuellen Benutzers in die mobile Ansicht eingeschlossen sind. Die select-Klausel projiziert einen neuen anonymen Typ mit nur zwei Eigenschaften. Es besteht kein Bedarf an Feldern, die vom Adapter nicht gerendert werden.

    HinweisHinweis

    Beachten Sie, dass von diesem Code LINQ to Objects verwendet wird und das Daten (das allTasks-Objekt) gefiltert werden, die sich bereits im Arbeitsspeicher befinden. Wenn Sie tatsächlich verhindern möchten, dass unerwünschte Listenelemente und Felder aus der Inhaltsdatenbank übertragen werden, müssen Sie den LINQ to SharePoint-Anbieter verwenden. Das Erläutern der Verwendung dieses Anbieters würde jedoch den Rahmen dieser exemplarischen Vorgehensweise sprengen und vom eigentlichen Zweck ablenken.

    // Use LINQ to filter out other users ... 
    var lightweightTasksOfUser = from SPListItem task in allTasks
                                 where task["AssignedTo"].ToString().EndsWith(currentUser.Name)
                                 select new {task.Title, Priority=task["Priority"]}; // ... and unneeded columns.
    
    ' Use LINQ to filter out other users ... 
    Dim lightweightTasksOfUser = From task As SPListItem In allTasks
                                 Where task("AssignedTo").ToString().EndsWith(currentUser.Name)
                                 Select New With {Key task.Title, Key .Priority=task("Priority")} '... and unneeded columns.
    
  9. Fügen Sie eine foreach-Schleife hinzu, die, falls beendet, jedes Element in der Aufgabenliste des aktuellen Benutzers bis zu einem Maximum von drei rendert.

    foreach (var lightweightTask in lightweightTasksOfUser)
    {
    
    } // end "for each lightweight task of the current user"
    
    For Each lightweightTask In lightweightTasksOfUser
    
    Next lightweightTask ' end "for each lightweight task of the current user"
    
  10. Fügen Sie in der Schleife den folgenden Code hinzu, um die Standardaufzählungszeichen für mobile Listenelemente in SharePoint Foundation zu rendern. Im Code wird Objektinitialisierersyntax, für die C# 3.0 erforderlich ist, zum Initialisieren der Eigenschaften verwendet. Sie können jedoch auch separate Anweisungen für die Eigenschaftenzuordnung verwenden.

    Image taskIcon = new Image() { ImageUrl = this.ItemBulletIconUrl,
                                   BreakAfter = false};
    this.Controls.Add(taskIcon);
    
    Dim taskIcon As New Image() With {.ImageUrl = Me.ItemBulletIconUrl, .BreakAfter = False}
    Me.Controls.Add(taskIcon)
    
  11. Fügen Sie den folgenden Code hinzu, um den Aufgabennamen zu rendern. Beachten Sie, dass die Font()-Eigenschaft schreibgeschützt ist und beschreibbare Untereigenschaften besitzt, einschließlich Bold und Size. Diese Untereigenschaften können mit der Objektinitialisierersyntax nicht festgelegt werden.

    Label taskTitle = new Label { Text = lightweightTask.Title,
                                  BreakAfter = false};
    taskTitle.Font.Bold = BooleanOption.True;
    this.Controls.Add(taskTitle);
    
    Dim taskTitle As Label = New Label With {.Text = lightweightTask.Title, .BreakAfter = False}
    taskTitle.Font.Bold = BooleanOption.True
    Me.Controls.Add(taskTitle)
    
  12. Fügen Sie den folgenden Code hinzu, sodass auf den Aufgabentitel die Aufgabenpriorität in einer kleinen Schriftart folgt. Beachten Sie, dass die Priority-Eigenschaft, auf die hier verwiesen wird, adhoc im anonymen Typ erstellt wurde, der durch die LINQ-Abfrage deklariert wurde. In C# müssen Sie mit "task["Priority"]" auf diesen Wert verweisen, wobei task ein Verweis auf ein SPListItem-Objekt aus der Tasks-Liste ist.

    Label priority = new Label() { Text = " " + lightweightTask.Priority };
    priority.Font.Size = FontSize.Small; 
    this.Controls.Add(priority);
    
    Dim priority As New Label() With {.Text = " " & lightweightTask.Priority}
    priority.Font.Size = FontSize.Small
    Me.Controls.Add(priority)
    
  13. Fügen Sie den folgenden Code hinzu, um hinter jeder Aufgabe eine Leerzeile einzufügen.

    this.Controls.Add(new LiteralText());
    
    Me.Controls.Add(New LiteralText())
    
  14. Fügen Sie schließlich die folgende if-Struktur hinzu, um die Anzahl der gerenderten Aufgaben auf drei zu beschränken und um eine Verknüpfung zur vollständigen Aufgabenliste des Benutzers zu rendern, falls mehr als drei Aufgaben vorhanden sind. Beachten Sie wiederum die Verwendung der Objektinitialisierersyntax.

    // Render no more than 3 tasks, but provide link to others.
    if (itemCount++ >= 3)
    {
        Link moreItemLink = new Link
        {
            Text = "All my tasks",
            href = SPMobileUtility.GetViewUrl(taskList, taskList.Views["My Tasks"])
        };
        this.Controls.Add(moreItemLink);
        break;
    } // end "if limit has been reached"
    
    ' Render no more than 3 tasks, but provide link to others.
            If itemCount >= 3 Then
                itemCount += 1
                Dim moreItemLink As Link = New Link With {.Text = "All my tasks", .href = SPMobileUtility.GetViewUrl(taskList, taskList.Views("My Tasks"))}
                Me.Controls.Add(moreItemLink)
                Exit For
            End If ' end "if limit has been reached"
            itemCount += 1
    

    Fügen Sie die folgende Anweisung direkt über dem Anfang der foreach-Schleife hinzu, um die itemCount-Variable zu initialisieren.

    Int16 itemCount = 1;
    
    Dim itemCount As Int16 = 1
    

    Die vollständige Deklaration sollte nun wie in diesem Codebeispiel angezeigt werden.

    protected override void CreateControlsForDetailView()
    {
        Image iconImage = this.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView);
        iconImage.BreakAfter = false;
        this.Controls.Add(iconImage);
    
        Label titleLabel = this.CreateWebPartLabel();
        this.Controls.Add(titleLabel);
    
        SPSite siteCollection = SPContext.Current.Site;
        SPUser currentUser = SPContext.Current.Web.CurrentUser;
        SPList taskList = siteCollection.AllWebs["MyGPSite"].Lists["Tasks"];
        SPListItemCollection allTasks = taskList.GetItems(taskList.DefaultView);
    
        // Use LINQ to filter out other users ... 
        var lightweightTasksOfUser = from SPListItem task in allTasks
                                     where task["AssignedTo"].ToString().EndsWith(currentUser.Name)
                                     select new {task.Title, Priority=task["Priority"]}; // ... and unneeded columns.
    
        Int16 itemCount = 1;
        foreach (var lightweightTask in lightweightTasksOfUser)
        {
            Image taskIcon = new Image() { ImageUrl = this.ItemBulletIconUrl,
                                           BreakAfter = false};
            this.Controls.Add(taskIcon);
    
            Label taskTitle = new Label { Text = lightweightTask.Title,
                                          BreakAfter = false};
            taskTitle.Font.Bold = BooleanOption.True;
            this.Controls.Add(taskTitle);
    
            Label priority = new Label() { Text = " " + lightweightTask.Priority };
            priority.Font.Size = FontSize.Small; 
            this.Controls.Add(priority);
    
            this.Controls.Add(new LiteralText());
    
            // Render no more than 3 tasks, but provide link to others.
            if (itemCount++ >= 3)
            {
                Link moreItemLink = new Link
                {
                    Text = "All my tasks",
                    href = SPMobileUtility.GetViewUrl(taskList, taskList.Views["My Tasks"])
                };
                this.Controls.Add(moreItemLink);
                break;
            } // end "if limit has been reached"
    
        } // end "for each lightweight task of the current user"
    } // end CreateControlsForDetailView
    
    Protected Overrides Sub CreateControlsForDetailView()
        Dim iconImage As Image = Me.CreateWebPartIcon(WebPartIconLink.LinkToSummaryView)
        iconImage.BreakAfter = False
        Me.Controls.Add(iconImage)
    
        Dim titleLabel As Label = Me.CreateWebPartLabel()
        Me.Controls.Add(titleLabel)
    
        Dim siteCollection As SPSite = SPContext.Current.Site
        Dim currentUser As SPUser = SPContext.Current.Web.CurrentUser
        Dim taskList As SPList = siteCollection.AllWebs("MyGPSite").Lists("Tasks")
        Dim allTasks As SPListItemCollection = taskList.GetItems(taskList.DefaultView)
    
        ' Use LINQ to filter out other users ... 
        Dim lightweightTasksOfUser = From task As SPListItem In allTasks
                                     Where task("AssignedTo").ToString().EndsWith(currentUser.Name)
                                     Select New With {Key task.Title, Key .Priority = task("Priority")} '... and unneeded columns.
    
        Dim itemCount As Int16 = 1
        For Each lightweightTask In lightweightTasksOfUser
            Dim taskIcon As New Image() With {.ImageUrl = Me.ItemBulletIconUrl, .BreakAfter = False}
            Me.Controls.Add(taskIcon)
    
            Dim taskTitle As Label = New Label With {.Text = lightweightTask.Title, .BreakAfter = False}
            taskTitle.Font.Bold = BooleanOption.True
            Me.Controls.Add(taskTitle)
    
            Dim priority As New Label() With {.Text = " " & lightweightTask.Priority}
            priority.Font.Size = FontSize.Small
            Me.Controls.Add(priority)
    
            Me.Controls.Add(New LiteralText())
    
            ' Render no more than 3 tasks, but provide link to others.
            If itemCount >= 3 Then
                itemCount += 1
                Dim moreItemLink As Link = New Link With {.Text = "All my tasks", .href = SPMobileUtility.GetViewUrl(taskList, taskList.Views("My Tasks"))}
                Me.Controls.Add(moreItemLink)
                Exit For
            End If ' end "if limit has been reached"
            itemCount += 1
        Next lightweightTask ' end "for each lightweight task of the current user"
    End Sub ' end CreateControlsForDetailView
    
  15. Wählen Sie im Menü Erstellen die Option Projektmappe erstellen aus. Das Verfahren ist noch nicht beendet, Sie müssen jedoch nun die Assembly kompilieren, sodass Sie einen öffentlichen Schlüsseltoken generieren können.

Registrieren des mobilen Adapters in der Datei "compat.browser"

  1. Öffnen Sie die Datei \\Inetpub\wwwroot\wss\VirtualDirectories\80\App_Browsers\compat.browser in einem Texteditor oder in Visual Studio, und führen Sie einen Bildlauf zum <browser>-Element durch, das den refID-Attributwert default hat. (Ersetzen Sie, falls erforderlich, "80" in der URL durch den Port der gewünschten Webanwendung.)

  2. Fügen Sie innerhalb des <controlAdapters>-Elements Folgendes als untergeordnetes Element hinzu.

    <adapter controlType="Microsoft.SharePoint.WebPartPages.UserTasksWebPart, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
        adapterType="MyCompany.SharePoint.WebPartPages.MobileAdapters.UserTasksWebPartMobileAdapter, MyCompany.SharePoint.WebPartPages.MobileAdapters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=yourAssemblyPublicToken" />
    

    Ersetzen Sie MyCompany in beiden Fällen durch den Namen Ihres Unternehmens. Ersetzen Sie yourAssemblyPublicKeyToken durch das öffentliche Schlüsseltoken der Assembly. Klicken Sie hierzu im Menü Extras von Visual Studio auf das Element Get Assembly Public Key. Der Schlüssel wird im Fenster Ausgabe angezeigt. (Falls das Element nicht vorhanden ist, finden Sie weitere Informationen unter Gewusst wie: Erstellen eines Tools zum Abrufen des öffentlichen Schlüssels einer Assembly.)

    HinweisHinweis

    Wenn Ihre Entwicklungsumgebung eine Farm mit mehreren Servern ist, müssen Sie die Datei compat.browser auf allen Servern bearbeiten. Informationen zur programmgesteuerten Bearbeitung finden Sie unter Gewusst wie: Ausführen von Code auf allen Webservern.

Registrieren des Adapters als sicheres Steuerelement auf dem Entwicklungscomputer

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie dann Hinzufügen und Neues Element aus.

    HinweisHinweis

    Wenn Sie in einer Serverfarm mit mehreren Front-End-Webservern entwickeln, sollten Sie dieses Verfahren nicht verwenden. Stellen Sie den Adapter stattdessen mit einer SharePoint Foundation-Projektmappe bereit, und fügen Sie der manifest.xml-Datei der Projektmappe ein <SafeControl>-Element hinzu. Weitere Informationen zu SharePoint Foundation-Projektmappen finden Sie unter Verwenden von Lösungen und in den untergeordneten Themen.

  2. Fügen Sie im Dialogfeld Neues Element hinzufügen eine XML-Datei mit dem Namen webconfig.MyCompany.xml hinzu, wobei MyCompany der Name Ihres Unternehmens ist, und klicken Sie auf Hinzufügen.

  3. Fügen Sie der Datei das folgende Markup hinzu.

    <action>
      <remove path="configuration/SharePoint/SafeControls/SafeControl[@Assembly=MyCompany.SharePoint.WebPartPages.MobileAdapters3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=yourAssemblyPublicKeyToken']" />
    
      <add path="configuration/SharePoint/SafeControls">
        <SafeControl
          Assembly="MyCompany.SharePoint.WebPartPages.MobileAdapters3, Version=1.0.0.0, Culture=neutral, PublicKeyToken=yourAssemblyPublicKeyToken"
          Namespace="MyCompany.SharePoint.WebPartPages.MobileAdapters3"
          TypeName="*"
          Safe="True"
          AllowRemoteDesigner="True"
        />
      </add>
    </action>
    

    Ersetzen Sie MyCompany in allen drei Fällen durch den Namen Ihres Unternehmens. Ersetzen Sie yourAssemblyPublicKeyToken in beiden Fällen durch dasselbe öffentliche Schlüsseltoken, das Sie im compat.browser-Dateimarkup verwendet haben.

  4. Speichern Sie die Datei. Von einer Batchdatei, die Sie im nächsten Verfahren erstellen werden, werden zwei Aktionen ausgeführt, wenn Sie eine Neuerstellung ausführen. Mit der <add>-Aktion wird der Adapter als sicheres Steuerelement registriert, indem das angegebene <SafeControl>-Element allen web.config-Dateien am Stamm aller Webanwendungen auf dem Entwicklungscomputer hinzugefügt wird. Die <remove>-Aktion ist beim ersten Ausführen der Batchdatei inaktiv. Bei jeder nachfolgenden Ausführung wird das <SafeControl>-Element entfernt, das bei der vorherigen Ausführung erstellt wurde. Dies ist erforderlich, da Webparts in SharePoint Foundation durch doppelte <SafeControl>-Elemente unterbrochen werden können.

Erstellen einer Batchdatei nach dem Erstellen

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie dann Hinzufügen und Neues Element aus.

  2. Wählen Sie im Dialogfeld Neues Element hinzufügen die Option Textdatei aus, geben Sie den Namen MobileAdapterPostBuild.bat ein, und klicken Sie auf Hinzufügen.

  3. Öffnen Sie die Datei, und fügen Sie die folgenden Zeilen hinzu.

    HinweisHinweis

    Bei diesem Code wird vorausgesetzt, dass Sie die Empfehlungen in Vorgehensweise: Hinzufügen von Toolverzeichnissen zur PATH-Umgebungsvariablen befolgt haben.

    gacutil if bin\debug\MyCompany.SharePoint.WebPartPages.MobileAdapters.dll
    xcopy /y webconfig.MyCompany.xml "C:\Program Files\Common Files\Microsoft Shared\web server extensions\14\CONFIG"
    stsadm –o copyappbincontent
    iisreset
    
  4. Klicken Sie im Menü Datei auf MobileAdapterPostBuild.bat speichern unter.

  5. Klicken Sie im Dialogfeld Datei speichern unter auf den Pfeil nach unten neben der Schaltfläche Speichern, und wählen Sie Mit Codierung speichern aus.

  6. Wählen Sie im Dialogfeld Erweiterte Speicheroptionen in der Dropdownliste Codierung die Option Westeuropäisch (Windows) – Codepage 1252 aus, und klicken Sie auf OK.

    Mit dieser Datei wird sichergestellt, dass bei jeder erneuten Erstellung des Projekts die letzten Versionen der Projektdateien an den richtigen Speicherort kopiert werden und dass die Adapterklasse als sicheres Steuerelement registriert wird. Zudem wird ein Neustart von SharePoint Foundation ausgeführt, sodass die neueste Version der Assembly geladen wird.

Neues Erstellen der Projektmappe

  • Wählen Sie im Menü Projektmappe neu erstellen von Visual Studio die Option Erstellen aus.

Testen des Adapters

In den folgenden Verfahren wird das Testen des Adapters beschrieben.

Erstellen einer benutzerdefinierten Webpartseite mit einem Webpart für Benutzeraufgaben

  1. Navigieren Sie in einem Computerbrowser zu der Website, auf die Sie von mobilen Geräten zugreifen möchten. Hierbei handelt es sich um dieselbe Seite, mit deren Name Sie CustomSite in dem Code zum Außerkraftsetzen von CreateControlsForDetailView() ersetzt haben.

  2. Erstellen Sie auf der Benutzeroberfläche von SharePoint Foundation eine Webpartseite, und fügen Sie dieser das Webpart Benutzeraufgaben hinzu. Führen Sie dazu folgende Schritte aus:

    1. Wählen Sie im Menü Websiteaktionen die Option Weitere Erstellungsoptionen aus.

    2. Klicken Sie auf der Seite Erstellen auf Webpartseite.

    3. Geben Sie auf der Seite Neue Webpartseite den Namen MyWPpage ein, und wählen Sie eine gewünschte Layoutvorlage aus.

    4. Wählen Sie eine beliebige Dokumentbibliothek auf der Website aus, z. B. Freigegebene Dokumente, und klicken Sie dann auf Erstellen. Die neue Seite wird im Bearbeitungsmodus geöffnet.

    5. Wählen Sie eine beliebige Webpartzone auf der Seite aus, z. B. Rechte Spalte, und klicken Sie über dem Bearbeitungsmenüband auf Einfügen.

    6. Klicken Sie auf der dann geöffneten Seite im Bereich Kategorien auf Personen.

    7. Wählen Sie im Bereich Webparts die Option Benutzeraufgaben aus, und klicken Sie auf Hinzufügen.

    8. Klicken Sie auf Bearbeitung beenden, um die Seite mit dem Webpart für Benutzeraufgaben anzuzeigen. Setzen Sie den Vorgang dann sofort mit dem nächsten Verfahren fort.

Auffüllen der Aufgabenliste der Website

  1. Klicken Sie auf einer beliebigen standardmäßigen Websiteseite der Website auf der linken Navigationsleiste auf Aufgaben.

  2. Öffnen Sie auf der Seite Aufgaben die Registerkarte Elemente.

  3. Klicken Sie auf dem Menüband auf Neues Element, um das Formular Neues Element zu öffnen. Füllen Sie das Formular aus, um eine neue Aufgabe zu erstellen, und klicken Sie auf Speichern. Wiederholen Sie diesen Schritt, um mehrere Aufgaben für mehrere Benutzer zu erstellen. Es sollten mindestens vier Aufgaben mindestens einem Benutzer zugewiesen werden.

  4. Öffnen Sie die Registerkarte Durchsuchen, um die gefüllte Liste anzuzeigen.

Installieren, Konfigurieren und Verwenden eines Emulators für mobile Geräte

  1. Installieren und konfigurieren Sie, falls dies noch nicht geschehen ist, einen Emulator für mobile Geräte, wie in Einrichten von Emulatoren für mobile Geräte erklärt, auf einem Computer mit einer Netzwerkverbindung zu dem Entwicklungsserver oder der Serverfarm. Es kann sich hierbei auch um den Entwicklungscomputer handeln.

  2. Melden Sie sich am Computer als einer der Benutzer an, denen Sie Aufgaben zugewiesen haben, und starten Sie einen Browser im Emulator, wie im Verfahren Starten eines Emulators in Einrichten von Emulatoren für mobile Geräte erläutert.

  3. Navigieren Sie zur benutzerdefinierten Webpartseite. Die auszuführenden Schritte sind abhängig vom Typ der Website unterschiedlich. In der Regel besitzt die Homepage einen Link zu Alle Websiteinhalte einblenden. Diese Seite wiederum enthält einen Link zu den Dokumentbibliotheken der Website, z. B. Freigegebene Dokumente. Die Liste Alle Dokumente für die Dokumentbibliothek enthält einen Link zur benutzerdefinierten Webpartseite.

    Die mobile Version der Seite wird mit allen über mobile Adapter verbundenen Webparts in reduziertem (nicht geschlossenem) Status angezeigt. Webparts, für die kein mobiler Adapter vorhanden ist oder die in der regulären (nicht mobilen) Version der Webpartseite geschlossen wurden, werden gar nicht angezeigt. In SharePoint Foundation bedeutet das Schließen eines Webparts das Ausblenden desselben. (Falls keine Webparts auf der Seite die für mobile Sichtbarkeit erforderlichen Bedingungen erfüllen, wird die Seite nicht geöffnet. Stattdessen wird die mobile Version der Seite Alle Websiteinhalte geöffnet.) In Abbildung 1 wird eine Webpartseite gezeigt, auf der nur das Webpart für Benutzeraufgaben nicht geschlossen ist und einen mobilen Adapter besitzt. Dieses Bild wurde mithilfe eines Windows Mobile 5.0 Pocket PC-Emulators erstellt.

    Abbildung 1. Das Webpart für Benutzeraufgaben in reduziertem Status auf einem mobilen Gerät.

    Mobiladapter 'Benutzeraufgaben' im reduzierten Zustand

  4. Klicken Sie auf das Pfeilspitzensymbol neben User Tasks, um das Webpart zu erweitern. In Abbildung 2 ist das Webpart dargestellt, nachdem es wie in diesem Thema erläutert angepasst wurde. Es ist für einen Benutzer erweitert, dem weniger als vier Aufgaben zugeordnet sind. Beachten Sie, dass sich am Ende der Liste kein Link All my tasks zu allen Aufgaben des Benutzers befindet. Beachten Sie zudem, dass nur die Aufgaben des aktuellen Benutzers aufgeführt sind.

    Abbildung 2. Das Webpart für Benutzeraufgaben im erweiterten Status auf einem mobilen Gerät.

    Mobiladapter 'Benutzeraufgaben' im erweiterten Zustand

    In Abbildung 3 wird das Webpart für einen Benutzer erweitert angezeigt, dem mehr als drei Aufgaben zugeordnet sind. Beachten Sie, dass nur drei Aufgaben aufgeführt sind und ein Link All my tasks zu allen Aufgaben des Benutzers folgt. Hiermit wird die Ansicht Meine Aufgaben der Aufgabenliste geöffnet. Wiederum werden nur die Aufgaben des aktuellen Benutzers angezeigt.

    Abbildung 3. Das Webpart für Benutzeraufgaben im erweiterten Status für einen Benutzer mit mehr als drei zugewiesenen Aufgaben.

    Benutzeraufgaben-Webadapter mit mehr als 3 Aufgaben