Codebeispiel: Code für das Webpart für die benutzerdefinierte Schlüsselwortsuche
Letzte Änderung: Montag, 19. April 2010
Gilt für: SharePoint Server 2010
Im Folgenden finden Sie den vollständigen Beispielcode für das Webpart für die benutzerdefinierte Schlüsselwortsuche, das in Exemplarische Vorgehensweise: Erstellen eines einfachen Webparts für Suchergebnisse mithilfe des Abfrageobjektmodells beschrieben wird.
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.Office.Server.Search.Query;
using Microsoft.Office.Server.Search.Administration;
using System.Data;
namespace CustomKeywordSearch.Custom_Keyword_Search
{
[ToolboxItemAttribute(false)]
public class Custom_Keyword_Search : WebPart
{
Button queryButton;
TextBox queryTextBox;
Label resultsLabel;
DataGrid resultsGrid;
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);
}
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);
}
}
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);
}
void queryButton_Click(object sender, EventArgs e)
{
if (queryTextBox.Text != string.Empty)
{
ExecuteKeywordQuery(queryTextBox.Text);
}
else
{
resultsLabel.Text = "You must enter a search word.";
}
}
}
}
Siehe auch
Aufgaben
Referenz
Microsoft.Office.Server.Search.Query
Konzepte
Abfragearchitektur der Unternehmenssuche