Freigeben über


Exemplarische Vorgehensweise: Auffüllen eines Rastersteuerelements mit Daten aus einer LINQ-Abfrage

Letzte Änderung: Donnerstag, 3. März 2011

Gilt für: SharePoint Foundation 2010

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie mit einer einfachen LINQ to SharePoint-Abfrage ausgewählte Datenfelder aus zwei verschiedenen Listen abrufen. Die Daten werden in einem Webpart mit einem Rastersteuerelement dargestellt. Eine Übersicht über das Ausführen von Abfragen mit LINQ to SharePoint finden Sie unter Gewusst wie: Ausführen von Abfragen mithilfe von LINQ to SharePoint.

Voraussetzungen

  • Stellen Sie sicher, dass der Pfad zum Tool SPMetal in der %PATH%-Umgebungsvariablen enthalten ist. Weitere Informationen finden Sie unter Vorgehensweise: Hinzufügen von Toolverzeichnissen zur PATH-Umgebungsvariablen.

  • Erstellen Sie eine Microsoft SharePoint Foundation-Website mit dem Namen Contoso. Im weiteren Verlauf dieser exemplarischen Vorgehensweise sowie im Code und Markup wird angenommen, dass dieser Name verwendet wird.

  • Erstellen Sie auf der Website zwei Listen mit den Namen Employees und Projects. Jede Liste enthält automatisch eine Title-Spalte. Fügen Sie den Listen wie in den folgenden Tabellen gezeigt Spalten hinzu.

    Liste "Employees":

    Spaltenname

    Spaltentyp

    Hinweise

    Job Title

    Eine Textzeile

    Team

    Eine Textzeile

    Project

    Nachschlagen

    Nachschlagen in der Title-Spalte der Liste Projects.

    Liste "Projects":

    Spaltenname

    Spaltentyp

    Hinweise

    Beschreibung

    Eine Textzeile

    Due Date

    Datum und Uhrzeit

    Primary Contact

    Nachschlagen

    Nachschlagen in der Title-Spalte der Liste Employees.

  • Füllen Sie beide Listen mit Beispiellistenelementen. Verwenden Sie das Title-Feld der Liste Employees für einen Mitarbeiternamen. Verwenden Sie das Title-Feld der Liste Projects für den Namen des Projekts. Einige Projektfälligkeitsdaten sollten weniger und andere mehr als sechs Monate in der Zukunft liegen.

So richten Sie das Projekt ein

  1. Starten Sie in Microsoft Visual Studio ein Webpartprojekt, indem Sie die Option Visuelles Webpart im Abschnitt SharePoint | 2010 des Bereichs Installierte Vorlagen im Dialogfeld Neues Projekt auswählen. Geben Sie dem Projekt den Namen ProjectsWithContacts, und klicken Sie auf OK. Der Assistent zum Anpassen von SharePoint wird geöffnet.

  2. Geben Sie die Contoso-Website als Debuggingwebsite an, und geben Sie an, dass Sie keine Lösung mit eingeschränkter Sicherheitsstufe, sondern eine Farmlösung bereitstellen möchten. Klicken Sie auf Fertig stellen.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise, und klicken Sie auf Verweis hinzufügen. Wählen Sie im Dialogfeld Verweis hinzufügen auf der Registerkarte .NET die Option Microsoft.SharePoint.Linq aus. (Möglicherweise ist es hilfreich, die Komponentenliste durch Klicken auf die Leiste Komponentenname alphabetisch zu sortieren.) 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 unter Assemblyname die Zeichenfolge Contoso.SharePoint.WebPartPages.ProjectsByContact und unter Standardnamespace die Zeichenfolge Contoso.SharePoint.WebPartPages ein. Lassen Sie Zielframework auf .NET Framework 3.5 festgelegt.

    Wichtiger HinweisWichtig

    Für Projekte, die auf einer Vorlage im Abschnitt SharePoint | 2010 des Bereichs Installierte Vorlagen basieren, entspricht das Standardzielframework .NET Framework 3.5. Ändern Sie diesen Wert nicht. Der Standardwert für das Feld Projektmappenplattformen im Standardmenü von Visual Studio lautet Any CPU. Sie können diesen Wert über die Dropdownliste Zielplattform auf der Registerkarte Erstellen des Dialogfelds Eigenschaften in x64 ändern. Weitere Informationen zum Treffen dieser Entscheidung finden Sie unter Gewusst wie: Festlegen des richtigen Zielframeworks und der CPU.

  6. Klicken Sie auf der Symbolleiste auf die Schaltfläche Alle Dateien speichern.

  7. Wenn Sie die Verwendung des Tools SPMetal automatisieren möchten, fügen Sie dem Projekt eine Textdatei mit dem Namen Prebuild.bat hinzu.

  8. Öffnen Sie Prebuild.bat, falls die Datei noch nicht geöffnet ist. Fügen Sie die folgenden Zeilen hinzu.

    Echo Off
    SET SPLANGEXT=cs
    
    Echo Backing up previous version of generated code ... 
    IF NOT EXIST .\PreviousVersionGeneratedCode MkDir .\PreviousVersionGeneratedCode
    IF EXIST Contoso.%SPLANGEXT% xcopy /Y/V Contoso.%SPLANGEXT% .\PreviousVersionGeneratedCode
    
    Echo Generating code ...
    SPMetal /web:http://MyServer/Contoso /code:Contoso.%SPLANGEXT%
    

    Nehmen Sie nach Bedarf die folgenden Änderungen am Code vor:

    • Ersetzen Sie MyServer/Contoso durch den vollständigen Pfad zur Contoso-Website.

    Mit dieser Batchdatei wird die vorherige Version des generierten Codes gespeichert, sodass Sie diesen bei Bedarf zu Debuggingzwecken mit der neuen Version vergleichen können.

  9. Speichern Sie die Datei, klicken Sie dazu jedoch nicht auf die Schaltfläche Speichern oder Alle Dateien speichern auf der Symbolleiste, und wählen Sie nicht Speichern im Menü Datei aus. Die Standardcodierung für Textdateien in Visual Studio ist mit Systembatchdateien nicht kompatibel. Wählen Sie stattdessen im Menü Datei die Option "Prebuild.bat" speichern unter aus. Klicken Sie im Dialogfeld Datei speichern unter auf den Dropdownpfeil der Schaltfläche Speichern. Wählen Sie die Option Mit Codierung speichern aus. Wählen Sie im Dialogfeld Erweiterte Speicheroptionen in der Dropdownliste Codierung die Option Unicode (UTF-8 ohne Signatur) – Codepage 65001 aus, und klicken Sie auf OK. Wählen Sie unbedingt die UTF-8-Version ohne Signatur aus.

    TippTipp

    Wenn die Datei versehentlich mit der falschen Methode gespeichert wird, öffnen Sie die Datei erneut, und nehmen Sie eine kleine Änderung vor (fügen Sie beispielsweise ein Leerzeichen hinzu), und speichern Sie die Datei mit der richtigen Methode erneut. Die Datei wird nur dann erneut gespeichert, wenn Sie eine Änderung vornehmen.

  10. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen. Wählen Sie Eigenschaften aus, und öffnen Sie die Registerkarte Buildereignisse.

  11. Geben Sie im Feld Befehlszeile für Präbuildereignis (nicht ... für Postbuildereignis) die beiden folgenden Zeilen ein.

    cd $(ProjectDir)
    Prebuild.bat
    

    Klicken Sie auf die Schaltfläche Alles speichern.

  12. Wählen Sie im Menü Erstellen die Option Projektmappe erstellen aus. Dadurch wird die Batchdatei und damit auch SPMetal aufgerufen. Mit SPMetal wird die Datei Contoso.cs im Projektverzeichnis in Windows erstellt, jedoch nicht im Projektmappen-Explorer. Fügen Sie die Datei dem Projekt als Vorhandenes Element hinzu.

    Die Datei Contoso.cs wird bei jeder erneuten Erstellung des Projekts erneut generiert. Obwohl die erneute Generierung der Datei für diese exemplarische Vorgehensweise nicht notwendig ist, ist dies bei Verwendung von SPMetal eine bewährte Methode. Dadurch wird sichergestellt, dass die Datei Contoso.cs an Listen vorgenommene Änderungen, der Website neu hinzugefügte Listen und von der Website gelöschte Listen widerspiegelt.

So erstellen Sie den Code und das Markup

  1. Erweitern Sie im Projektmappen-Explorer den Knoten VisualWebPart1, und öffnen Sie die Datei VisualWebPart1.webpart.

  2. Legen Sie den Wert der Title-Eigenschaft auf Projects Listed by Primary Contact fest.

  3. Legen Sie den Wert der Description-Eigenschaft auf Projects due in next 6 months, listed by primary contact fest.

  4. Klicken Sie auf der Symbolleiste auf die Schaltfläche Speichern.

  5. Öffnen Sie die Datei VisualWebPart1UserControl.ascx, und fügen Sie unter den vorhandenen Direktiven das folgende Markup hinzu.

    <%@ Import Namespace="Microsoft.SharePoint.WebControls" %>
    
    <SharePoint:SPGridView id="spGridView" runat="server" AutoGenerateColumns="false">
      <HeaderStyle HorizontalAlign="Left" ForeColor="Navy" Font-Bold="true" />
      <Columns>
        <SharePoint:SPBoundField DataField="Title" HeaderText="Employee">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
        <SharePoint:SPBoundField DataField="JobTitle" HeaderText="Job Title">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
        <SharePoint:SPBoundField DataField="ProjectTitle" HeaderText="Project Title">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
        <SharePoint:SPBoundField DataField="DueDate" HeaderText="Due Date">
          <headerstyle HorizontalAlign="Left" />
        </SharePoint:SPBoundField>
      </Columns>
    </SharePoint:SPGridView>
    
  6. Klicken Sie auf der Symbolleiste auf die Schaltfläche Speichern.

  7. Erweitern Sie im Projektmappen-Explorer den Knoten VisualWebPart1UserControl.ascx, und öffnen Sie die CodeBehind-Datei VisualWebPart1UserControl.ascx.cs.

  8. Fügen Sie die folgenden using-Anweisungen hinzu.

    using System.Linq;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Linq;
    
  9. Ersetzen Sie die Page_Load-Methode durch Folgendes. Beachten Sie, dass durch die Ausdrücke emp.Project.DueDate und emp.Project.Title implizite Verknüpfungen zwischen den Listen Employees und Projects erstellt werden. Außerdem werden in der select-Klausel nur die Felder angegeben, die tatsächlich im Webpart angezeigt werden. Das Description-Feld der einzelnen Projektelemente muss nicht über das Netzwerk von der Inhaltsdatenbank an den Front-End-Webserver gesendet werden.

    protected void Page_Load(object sender, EventArgs e)
    {
        using (ContosoDataContext dc = new ContosoDataContext(SPContext.Current.Web.Url))
        {
            EntityList<EmployeesItem> Employees =
            dc.GetList<EmployeesItem>("Employees");
    
            var empQuery = from emp in Employees
                           where emp.Project.DueDate < DateTime.Now.AddMonths(6)
                           select new
                           {
                               emp.Title,
                               emp.JobTitle,
                               ProjectTitle = emp.Project.Title,
                               DueDate = emp.Project.DueDate.Value.ToShortDateString()
                            };
    
            spGridView.DataSource = empQuery;
            spGridView.DataBind();
        }
    }
    
  10. Klicken Sie auf der Symbolleiste auf die Schaltfläche Speichern.

So stellen Sie das Webpart bereit und testen dieses

  1. Wählen Sie im Menü Erstellen die Option Projektmappe bereitstellen aus. Beim Bereitstellungsvorgang geschieht Folgendes:

    • Ausführen der Batchdatei (und damit von SPMetal)

    • Erstellen des Projekts

    • Bereitstellen der Paketdatei ProjectsWithContacts.wsp im Lösungskatalog der Farm

    • Bereitstellen der Contoso.SharePoint.WebPartPages.ProjectsByContact.dll-Assembly im globalen Assemblycache (Global Assembly Cache, GAC)

    • Hinzufügen des Features ProjectsWithContacts Feature1 zum Featurekatalog der Websitesammlung

    • Aktivieren des Features

    • Neustarten der Internetinformationsdienste (Internet Information Services, IIS)

    Wenn Sie nach Änderungen am Projekt erneut Projektmappe bereitstellen auswählen, wird die vorherige Version der Projektmappe automatisch zurückgezogen und durch die neueste Version ersetzt.

  2. Navigieren Sie zu einer beliebigen Webparts-Seite auf der Website, und klicken Sie auf dem Menüband auf die Registerkarte Seite.

  3. Klicken Sie auf Seite bearbeiten, und klicken Sie dann in einer beliebigen Webpartzone auf Webpart hinzufügen.

  4. Klicken Sie im Feld Kategorien auf den Ordner Custom, dann im Feld Webparts auf Projects Listed by Primary Contact und dann auf Hinzufügen.

  5. Klicken Sie auf Bearbeitung beenden. Überprüfen Sie, ob das Webpart auf der Seite angezeigt und mit Daten aus den beiden Listen aufgefüllt wird. Projekte mit Fälligkeitsdaten, die mehr als sechs Monate in der Zukunft liegen, sollten nicht angezeigt werden.

Siehe auch

Aufgaben

Vorgehensweise: Verwenden von SPMetal

Konzepte

Gewusst wie: Ausführen von Abfragen mithilfe von LINQ to SharePoint

Vorgehensweise: Hinzufügen von Toolverzeichnissen zur PATH-Umgebungsvariablen

Weitere Ressourcen

Verwalten von Daten mit LINQ to SharePoint