Procédure pas à pas : création d'un composant WebPart de recherche de contenu d'entreprise personnalisé
Avec Recherche de contenu d'entreprise dans Microsoft Office SharePoint Server 2007, vous pouvez personnaliser l'apparence et les fonctionnalités des pages du centre de recherche et composants WebPart à partir du navigateur. Toutefois, si vous souhaitez faire des personnalisations qui ne sont pas possibles par le biais du navigateur, vous pouvez créer des composants WebPart personnalisés qui utilisent le modèle objet de requête pour exécuter des requêtes sur le composant de recherche.
Dans cette procédure, vous allez créer un composant WebPart de recherche personnalisé et l'ajouter à votre site. Le composant WebPart décrit dans cette procédure fournit une fonctionnalité de recherche très basique.
Les tâches suivantes sont présentées :
Création du projet pour le composant WebPart
Codage du composant WebPart
Déploiement du composant WebPart
Conditions préalables requises
Pour effectuer cette procédure, les éléments suivants sont indispensables :
Microsoft Visual Studio 2005 installé sur votre ordinateur de développement
Microsoft Office SharePoint Server 2007 installé sur votre ordinateur de développement
Autorisations de créer et modifier des pages du site Centre de recherche
Configuration du projet du composant WebPart de recherche personnalisé
Pour créer le projet pour le composant WebPart
Dans Visual Studio 2005, dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
Dans Types de projets, sous C#, sélectionnez Windows.
Sous Modèles, sélectionnez Bibliothèque de contrôles Web. Dans le champ Nom, entrez CustomSearchWebPart, puis cliquez sur OK.
La prochaine étape consiste à ajouter les références requises à votre projet WebPart.
Notes
La configuration de l'environnement de développement prise en charge pour Microsoft Office SharePoint Server 2007 consiste à développer localement sur un serveur équipé de Microsoft Office SharePoint Server 2007.
Pour ajouter des références au projet CustomSearchWebPart
Dans le menu Projet, cliquez sur Ajouter une référence.
Sous l'onglet .NET, sélectionnez chacune des références suivantes, puis cliquez sur OK après chaque sélection.
System.Data
System.XML
Microsoft.SharePoint
Microsoft.Office.Server
Microsoft.Office.Server.Search
Avant d'ajouter le code au composant WebPart, remplacez le fichier de classes par défaut par un nouveau fichier de classes.
Pour créer le fichier de classes pour le composant WebPart
Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur WebCustomControl1.cs, puis cliquez sur Supprimer pour supprimer la classe par défaut créée avec le projet.
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément, cliquez sur Contrôle Web personnalisé, entrez clsSearchQuery.cs, puis cliquez sur Ajouter.
Écriture du code du composant WebPart de recherche personnalisé
Vous allez maintenant modifier le code par défaut inclus dans le nouveau fichier de classes.
Pour modifier le code par défaut dans clsSearchQuery
Ajoutez les directives d'espace de noms suivantes dans la partie supérieure du code dans clsSearchQuery.cs :
using System.Drawing; using System.Data; using System.Xml; using System.Xml.Serialization; using Microsoft.SharePoint.WebPartPages; using Microsoft.Office.Server; using Microsoft.Office.Server.Search.Query;
Dans la ligne de code suivante, remplacez WebControl par WebPart :
public class clsSearchQuery : WebControl
Ajoutez la ligne de code suivante au-dessus de la déclaration de classe pour clsSearchQuery :
[XmlRoot(Namespace = "CustomSearchWebPart")]
Maintenant vous êtes prêt à écrire le code pour interroger le composant de recherche et afficher le contenu du composant WebPart.
Pour ajouter les contrôles enfants du composant WebPart et les rendre
Ajoutez le code suivant sous la déclaration de classe :
Button cmdSearch; TextBox txtQueryText; Label lblQueryResult; DataGrid grdResults;
Remplacez la méthode CreateChildControls par le code suivant :
protected override void CreateChildControls() { Controls.Clear(); txtQueryText = new TextBox(); this.Controls.Add(txtQueryText); cmdSearch = new Button(); cmdSearch.Text = "Start Search"; cmdSearch.Click += new EventHandler(cmdSearch_Click); this.Controls.Add(cmdSearch); lblQueryResult = new Label(); this.Controls.Add(lblQueryResult); }
Ajoutez un événement Click pour cmdSearch à l'aide du code suivant :
void cmdSearch_Click(object sender, EventArgs e) { if (txtQueryText.Text != string.Empty) { keywordQueryExecute(txtQueryText.Text); } else { lblQueryResult.Text = "You must enter a search word."; } }
Vous êtes maintenant prêt à ajouter le code pour accéder au modèle objet Requête. Cet exemple de code utilise la classe Microsoft.Office.Server.Search.Query.KeywordQuery pour exécuter la requête de recherche, passant l'objet Microsoft.Office.Server.ServerContext comme valeur du paramètre. La requête de recherche est une simple requête par mot clé qui recherche les enregistrements dont la propriété Author correspond à l'objet de la recherche.
Pour exécuter la requête par mot clé
Ajoutez le code suivant à la classe clsSearchQuery :
private void keywordQueryExecute(string strQueryText) { KeywordQuery kRequest = new KeywordQuery(ServerContext.Current); string strQuery = "author:" + strQueryText; kRequest.QueryText = strQuery; //to return relevant results kRequest.ResultTypes |= ResultType.RelevantResults; ResultTableCollection resultTbls = kRequest.Execute(); if ((int)ResultType.RelevantResults != 0) { ResultTable tblResult = resultTbls [ResultType.RelevantResults]; if (tblResult.TotalRows == 0) { lblQueryResult.Text = "No Search Results Returned."; } else { ReadResultTable(tblResult); } } }
Pour lire les données de résultats de la recherche, la méthode keywordQueryExecute appelle la méthode ReadResultTable. Ajoutez le code suivant pour ReadResultTable :
void ReadResultTable(ResultTable rt) { DataTable relResultsTbl = new DataTable(); relResultsTbl.TableName = "Relevant Results"; DataSet ds = new DataSet("resultsset"); ds.Tables.Add(relResultsTbl); ds.Load(rt,LoadOption.OverwriteChanges,relResultsTbl); fillResultsGrid(ds); }
La méthode ReadResultTable appelle la méthode fillResultsGrid pour lier le DataSet des résultats de recherche au DataGrid grdResults. Ajoutez le code pour fillResultsGrid :
private void fillResultsGrid(DataSet grdDs) { //Instantiate the DataGrid, and set the DataSource grdResults = new DataGrid(); grdResults.DataSource = grdDs; //Set the display properties for the DataGrid. grdResults.GridLines = GridLines.None; grdResults.CellPadding = 4; grdResults.Width = Unit.Percentage(100); grdResults.ItemStyle.ForeColor = Color.Black; grdResults.ItemStyle.BackColor = Color.AliceBlue; grdResults.ItemStyle.Font.Size = FontUnit.Smaller; grdResults.ItemStyle.Font.Name = "Tahoma"; grdResults.HeaderStyle.BackColor = Color.Navy; grdResults.HeaderStyle.ForeColor = Color.White; grdResults.HeaderStyle.Font.Bold = true; grdResults.HeaderStyle.Font.Name = "Tahoma"; grdResults.HeaderStyle.Font.Size = FontUnit.Medium; /*Turn off AutoGenerate for the columns, so that the DataGrid doesn't automatically bind to all of the columns in the search results set. Then create and configure only the columns you want to include in the DataGrid. */ grdResults.AutoGenerateColumns = false; HyperLinkColumn colTitle = new HyperLinkColumn(); colTitle.DataTextField = "Title"; colTitle.HeaderText = "Title"; colTitle.DataNavigateUrlField = "Path"; grdResults.Columns.Add(colTitle); BoundColumn colAuthor = new BoundColumn(); colAuthor.DataField = "Author"; colAuthor.HeaderText = "Author"; grdResults.Columns.Add(colAuthor); //Bind the data to the DataGrid grdResults.DataBind(); //Add the DataGrid to the controls Controls.Add(grdResults); }
Déploiement du composant WebPart de recherche personnalisé
Étant donné que le composant WebPart de recherche personnalisé que vous créez à partir de cet exemple n'a pas de nom fort, vous ne pouvez pas le déployer sur le cache d'assembly global. Vous devez le déployer sur le répertoire _app_bin de votre site.
Pour déployer le composant WebPart de recherche personnalisé sur votre site
Copiez CustomSearchWebPart.dll dans le répertoire _bin de votre site. Le chemin d'accès ressemble à ceci :
\Inetpub\wwwroot\wss\VirtualDirectories\Site\_app_bin
Notes
Si vous ne connaissez pas le chemin d'accès de l'application de votre site, recherchez-le dans le Gestionnaire des services Internet.
Ouvrez la console du Gestionnaire des services Internet, développez le nœud Sites Web, cliquez avec le bouton droit de la souris sur l'application de votre site, puis cliquez sur Propriétés.
Cliquez sur l'onglet Répertoire de base.
Le champ Chemin d'accès local contient le chemin d'accès à l'application.
Pour enregistrer le composant WebPart de recherche personnalisé comme SafeControl
Ouvrez le fichier web.config du site auquel vous souhaitez ajouter le composant WebPart de recherche personnalisé. Ce fichier se situe dans le dossier racine du site.
Ajoutez la balise <SafeControl/> suivante à la section
<SafeControls> </SafeControls>
de web.config :<SafeControl Assembly="CustomSearchWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="CustomSearchWebPart" TypeName="*" Safe="True" />
Enregistrez vos modifications, puis fermez le fichier web.config.
Pour créer le fichier de définition du composant WebPart de recherche personnalisé
Ouvrez un nouveau fichier dans un éditeur de texte comme le Bloc-notes et ajoutez le code XML suivant :
<?xml version="1.0"?> <WebPart xmlns="https://schemas.microsoft.com/WebPart/v2"> <Assembly>CustomSearchWebPart, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=null</Assembly> <TypeName>CustomSearchWebPart.clsSearchQuery</TypeName> <Title>Custom Search Web Part</Title> </WebPart>
Nommez le fichier CustomSearchWebPart.dwp et enregistrez-le.
Notes
Si vous ne travaillez pas sur le serveur Office SharePoint Server 2007, vous devez copier le fichier sur un serveur Office SharePoint Server 2007 pour terminer cette étape.
Pour enregistrer le composant WebPart de recherche personnalisé comme SafeControl
Ouvrez le fichier web.config du site auquel vous souhaitez ajouter le composant WebPart de recherche personnalisé.
Ajoutez la balise <SafeControl/> suivante à la section <SafeControls> de web.config :
<SafeControl Assembly="CustomSearchWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="CustomSearchWebPart" TypeName="*" Safe="True" />
Pour déployer le composant WebPart de recherche personnalisé sur votre site
Copiez CustomSearchWebPart.dll dans le répertoire _bin de votre site. Le chemin d'accès ressemble à ceci :
\Inetpub\wwwroot\wss\VirtualDirectories\Site
Étapes suivantes
Le code complet de l'exemple de classe clsSearchQuery est disponible dans la rubrique Exemple : code du composant WebPart de recherche de contenu d'entreprise personnalisée.
Une fois le composant WebPart déployé, vous pouvez le tester.
Pour tester le composant WebPart de recherche personnalisé
Ouvrez le site Centre de recherche dans votre navigateur, cliquez sur le menu Actions du site, puis cliquez sur Créer une page.
Dans le champ Nom de l'URL, entrez customsearchwebparttest.
Dans le champ Titre, entrez Page de test du composant WebPart de recherche personnalisé.
Dans la liste Mise en page, sélectionnez Page de recherche (Page d'accueil).
Pour créer la page, cliquez sur Créer.
Avec la page customsearchwebparttest.aspx ouverte dans le navigateur, cliquez sur le lien Ajouter un composant WebPart dans la zone supérieure.
Dans la boîte de dialogue Ajouter des composants WebPart, cliquez sur le lien Galerie et options des composants WebPart avancés.
Cliquez sur le lien Parcourir, puis sélectionnez Importer.
Cliquez sur Parcourir, recherchez l'endroit où vous avez enregistré le fichier CustomSearchWebPart.dwp, sélectionnez-le, puis cliquez sur Ouvrir.
Le composant WebPart de recherche personnalisé devrait maintenant apparaître dans la boîte de dialogue. Vous pouvez le glisser-déposer sur la page pour l'utiliser.
Voir aussi
Référence
Microsoft.Office.Server.Search.Query.KeywordQuery
Autres ressources
Procédure pas à pas : Création d'un composant WebPart ASP.NET pour l'exemple d'application de données métier AdventureWorks
Mise en route avec les composants WebPart de recherche de contenu d'entreprise personnalisé
Vue d'ensemble du modèle objet de requête de la recherche de contenu d'entreprise
Référence de syntaxe de mots-clés Recherche de contenu d'entreprise