Freigeben über


Exemplarische Vorgehensweise: Erstellen eines einfachen Webparts für Suchergebnisse mithilfe des Abfrageobjektmodells

Letzte Änderung: Freitag, 30. April 2010

Gilt für: SharePoint Server 2010

Inhalt dieses Artikels
Einrichten des Webpartprojekts
Implementieren des Webparts
Bereitstellen und Testen des Webparts

In Microsoft SharePoint Server 2010 können Sie die Darstellung und Funktionalität der Suchcenterseiten und Webparts vom Browser aus anpassen. Wenn Sie diese Seiten oder Webparts jedoch auf eine Art anpassen möchten, die im Browser nicht möglich ist, können Sie benutzerdefinierte Webparts erstellen, die das Query-Objektmodell oder das Federation-Objektmodell zur Ausführung von Suchabfragen verwenden.

In dieser exemplarischen Vorgehensweise erstellen Sie ein benutzerdefiniertes Webpart, das eine Schlüsselwortabfrage ausführt und die zurückgegebenen Suchergebnisse mithilfe des Query-Objektmodells anzeigt. Ein Beispiel, in dem die Erstellung eines benutzerdefinierten Suchwebparts mithilfe des Federation-Objektmodells gezeigt wird, finden Sie unter Exemplarische Vorgehensweise: Erstellen eines einfachen Such-Webparts mithilfe des Federation-Objektmodells.

Den vollständigen Code für das CustomKeywordSearch-Webpartbeispiel finden Sie unter Codebeispiel: Code für das Webpart für die benutzerdefinierte Schlüsselwortsuche.

HinweisHinweis

Das hier beschriebene Webpart bietet lediglich eine Basissuchfunktion.

In dieser exemplarischen Vorgehensweise werden folgende Aufgaben behandelt:

  • Einrichten des Webpartprojekts

  • Implementieren des Webparts

  • Bereitstellen und Testen des Webparts

Voraussetzungen

Für diese exemplarische Vorgehensweise muss Folgendes auf dem Entwicklungscomputer installiert sein:

  • Microsoft SharePoint Server 2010

  • Microsoft Visual Studio 2010 oder ein ähnliches Microsoft .NET Framework-kompatibles Entwicklungstool

Einrichten des Webpartprojekts

So erstellen Sie das Projekt für das Webpart

  1. Zeigen Sie in Visual Studio 2010 im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  2. Wählen Sie in Projekttypen unter C# die Option SharePoint aus.

  3. Wählen Sie unter Vorlagen die Option Leeres SharePoint-Projekt aus. Geben Sie im Feld Name die Bezeichnung CustomKeywordSearch ein, und klicken Sie auf OK.

  4. Klicken Sie im Assistenten zum Anpassen von SharePoint auf Als Farmlösung bereitstellen, und klicken Sie dann auf Fertig stellen.

Als Nächstes müssen Sie dem Webpartprojekt die erforderlichen Verweise hinzufügen.

So fügen Sie dem Webpartprojekt Verweise hinzu

  1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.

  2. Wählen Sie auf der Registerkarte .NET nacheinander alle folgenden Verweise aus, und klicken Sie nach jeder Auswahl auf OK :

    • Microsoft.Office.Server

    • Microsoft.Office.Server.Search

Bevor Sie Code für das Webpart hinzufügen, müssen Sie dem Projekt die Webpart-Klassendatei hinzufügen und anschließend der Klasse die using-Anweisungen hinzufügen.

So fügen Sie dem Projekt die Webpartklasse hinzu

  1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen .

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Webpart, geben Sie Benutzerdefinierte Schlüsselwortsuche ein, und klicken Sie auf Hinzufügen.

  3. Fügen Sie am Anfang der Klasse die folgenden Namespacedirektiven hinzu.

    using System.Data;
    using Microsoft.Office.Server.Search.Query;
    using Microsoft.Office.Server.Search.Administration;
    

Implementieren des Webparts

Nun können Sie den Code zur Ausführung der Abfrage erstellen und dann die zurückgegebenen Suchergebnisse rendern.

So fügen Sie die untergeordneten Steuerelemente des Webparts hinzu und rendern sie

  1. Fügen Sie unter der Deklaration der Custom_Keyword_Search-Klasse den folgenden Code hinzu.

    Button queryButton;
    TextBox queryTextBox;
    Label resultsLabel;
    DataGrid resultsGrid;
    
  2. Fügen Sie in der CreateChildControls-Methode den Code zur Initialisierung der Steuerelemente wie folgt hinzu.

    protected override void CreateChildControls()
    {
         Controls.Clear();
         queryTextBox = new TextBox();
         this.Controls.Add(queryTextBox);
         queryButton = new Button();
         queryButton.Text = "Start Search";
         queryButton.Click += new EventHandler(queryButton_Click);
         this.Controls.Add(queryButton);
         resultsLabel = new Label();
         this.Controls.Add(resultsLabel);
    }
    
  3. Fügen Sie mithilfe des folgenden Codes ein Click-Ereignis für queryButton hinzu.

    void queryButton_Click(object sender, EventArgs e)
    {
         if (queryTextBox.Text != string.Empty)
         {
              ExecuteKeywordQuery(queryTextBox.Text);
         }
         else
         {
              resultsLabel.Text = "You must enter a search word.";
         }
    }
    
  4. Fügen Sie den folgenden Code für die ExecuteKeywordQuery-Methode hinzu.

    void ExecuteKeywordQuery(string queryText)
    {
         SearchServiceApplicationProxy proxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy
    (SPServiceContext.GetContext(SPContext.Current.Site));
         KeywordQuery query = new KeywordQuery(proxy);
         query.ResultsProvider = Microsoft.Office.Server.Search.Query.SearchProvider.Default;
         query.QueryText = queryText;
         query.ResultTypes|=ResultType.RelevantResults;
         ResultTableCollection searchResults = query.Execute();
    
         if(searchResults.Exists(ResultType.RelevantResults))
         {
              ResultTable searchResult = searchResults[ResultType.RelevantResults];
              DataTable result = new DataTable();
              result.TableName = "Result";
              result.Load(searchResult,LoadOption.OverwriteChanges);
              FillResultsGrid(result);
         }
    }
    
  5. Fügen Sie den folgenden Code für die FillResultsGrid-Methode hinzu.

    private void FillResultsGrid(DataTable resultTable)
    {
         //Instantiate the DataGrid
         resultsGrid = new DataGrid();
         //Set the DataSource
         resultsGrid.DataSource = resultTable;
         //Bind the data to the DataGrid
         resultsGrid.DataBind();
         //Add the DataGrid to the controls
         Controls.Add(resultsGrid);
    }
    

Nun können Sie das Webpart bereitstellen.

Bereitstellen und Testen des Webparts

So stellen Sie das Webpart bereit

  1. Klicken Sie im Menü Erstellen auf Projektmappe bereitstellen.

    Beim Bereitstellungsvorgang geschieht Folgendes:

    • Die Webpart-DLL wird erstellt und im globalen Assemblycache bereitgestellt.

    • Das Webpart wird erstellt und auf der Website bereitgestellt.

    • Internetinformationsdienste (Internet Information Services, IIS) wird wieder verwendet.

    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 im Browser zu der Webpartseite, der Sie das Webpart hinzufügen möchten.

  3. Klicken Sie auf die Registerkarte Websiteaktionen, und klicken Sie dann auf Seite bearbeiten.

  4. Klicken Sie in einer beliebigen Webpartzone auf Webpart hinzufügen.

  5. Klicken Sie in Kategorien auf Benutzerdefiniert.

  6. Klicken Sie unter Webparts auf Benutzerdefinierte Schlüsselwortsuche, und klicken Sie dann auf Hinzufügen.

  7. Klicken Sie auf Speichern & Schließen. Vergewissern Sie sich, dass das Webpart für die benutzerdefinierte Schlüsselwortsuche auf der Seite angezeigt wird.

So testen Sie das Webpart

  1. Geben Sie in das Textfeld einen Suchbegriff ein, und klicken Sie dann auf Suche starten.

  2. Klicken Sie in Visual Studio 2010 im Menü Projekt auf Eigenschaften von CustomKeywordSearch.

  3. Klicken Sie auf der Registerkarte Debuggen im Abschnitt Startaktion auf Browser mit folgender URL starten, und geben Sie dann die URL der Webpartseite ein, der Sie das Webpart hinzugefügt haben. Schließen Sie die Eigenschaftenseite.

    Im Anschluss an diesen Schritt können Sie einen Haltepunkt im Webpartcode festlegen und mit dem Debuggen beginnen, indem Sie im Menü Debuggen auf F5 klicken.

Siehe auch

Referenz

Microsoft.Office.Server.Search.Query.KeywordQuery