Guide pas à pas : créer une page d’application SharePoint

Une page d’application est une forme spécialisée d’une page ASP.NET. Les pages d’application contiennent du contenu fusionné avec une page maître SharePoint. Pour plus d’informations, consultez Créer des pages d’application pour SharePoint.

Ce guide pas à pas vous montre comment créer une page d’application, puis la déboguer à l’aide d’un site SharePoint local. Cette page affiche tous les éléments que chaque utilisateur a créés ou modifiés dans tous les sites de la batterie de serveurs.

Cette procédure pas à pas décrit les tâches suivantes :

  • Création d'un projet SharePoint.
  • Ajout d’une page d’application au projet SharePoint.
  • Ajout de contrôles ASP.NET à la page d’application.
  • Ajout de code derrière les contrôles ASP.NET.
  • Test de la page de l’application.

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE Visual Studio.

Prérequis

  • Éditions prises en charge de Windows et SharePoint.

Créer un projet SharePoint

Tout d’abord, créez un projet SharePoint vide. Plus tard, vous allez ajouter un élément de page d’application à ce projet.

  1. Démarrez Visual Studio.

  2. Ouvrez la boîte de dialogue Nouveau projet, développez le nœud Office/SharePoint sous la langue que vous souhaitez utiliser, puis choisissez le nœud Solutions SharePoint.

  3. Dans le volet Modèles installés de Visual Studio, choisissez le modèle SharePoint 2010 - Projet vide. Nommez le projet MySharePointProject, puis choisissez le bouton OK.

    L’Assistant Personnalisation de SharePoint s’affiche. Cet Assistant vous permet de sélectionner le site que vous utiliserez pour déboguer le projet et le niveau d’approbation de la solution.

  4. Choisissez le bouton d’option Déployer en tant que solution de batterie de serveurs, puis choisissez le bouton Terminer pour accepter le site SharePoint local par défaut.

Créer une page d’application

Pour créer une page d’application, ajoutez un élément Page d’application au projet.

  1. Dans l’Explorateur de solutions, choisissez le projet MySharePointProject.

  2. Dans la barre de menus, choisissez Projet>Ajouter un nouvel élément.

  3. Dans la boîte de dialogue Ajouter un nouvel élément, choisissez la page Application (modèle de solution de batterie uniquement).

  4. Nommez la page SearchItems, puis choisissez le bouton Ajouter.

    Le concepteur Visual Web Developer affiche la page d’application en mode Source où vous pouvez voir les éléments HTML de la page. Le concepteur affiche le balisage de plusieurs contrôles Content. Chaque contrôle est mappé à un contrôle ContentPlaceHolder défini dans la page maître d’application par défaut.

Concevoir la mise en page de l’application

L’élément Page d’application vous permet d’utiliser un concepteur pour ajouter des contrôles ASP.NET à la page de l’application. Ce concepteur est le même concepteur que celui utilisé dans Visual Web Developer. Ajoutez une étiquette, une liste de cases d’option et un tableau à la vue Source du concepteur, puis définissez les propriétés comme vous le feriez lorsque vous concevez n’importe quelle page de ASP.NET standard.

  1. Dans la barre de menus, choisissez Affichage>Boîte à outils.

  2. Dans le nœud Standard de la boîte à outils, effectuez l’une des étapes suivantes :

    • Ouvrez le menu contextuel de l’élément Étiquette, choisissez Copier, ouvrez le menu contextuel de la ligne sous le contrôle de contenu PlaceHolderMain dans le concepteur, puis choisissez Coller.

    • Faites glisser l’élément Étiquette de la boîte à outils vers le corps du contrôle de contenu PlaceHolderMain.

  3. Répétez l’étape précédente pour ajouter un élément DropDownList et un élément Tableauau contrôle de contenu PlaceHolderMain.

  4. Dans le concepteur, remplacez la valeur de l’attribut Text du contrôle d’étiquette par Afficher tous les éléments.

  5. Dans le concepteur, remplacez l’élément <asp:DropDownList> par le code XML suivant.

    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
     OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
        <asp:ListItem Text="Created by me" Value="Author"></asp:ListItem>
        <asp:ListItem Text="Modified by me" Value="Editor"></asp:ListItem>
    </asp:DropDownList>
    

Gérer les événements des contrôles sur la page

Gérez les contrôles dans une page d’application comme vous le feriez pour n’importe quelle page ASP.NET. Dans cette procédure, vous allez gérer l’événement SelectedIndexChanged de la liste déroulante.

  1. Dans le menu Affichage, choisissez Code.

    Le fichier de codes de la page d’application s’ouvre dans l’Éditeur de code.

  2. Ajoutez la méthode suivante à la classe SearchItems. Ce code gère l’événement SelectedIndexChanged de l’événement DropDownList en appelant une méthode que vous allez créer plus loin dans ce guide pas à pas.

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SPSecurity.RunWithElevatedPrivileges(GetItems);
       
    }
    
  3. Ajoutez les instructions suivantes en haut du fichier de codes de la page d’application.

    using System.Web.UI.WebControls;
    using Microsoft.SharePoint.Administration;
    using System.Collections;
    
  4. Ajoutez la méthode suivante à la classe SearchItems. Cette méthode effectue une itération sur tous les sites de la batterie de serveurs et recherche les éléments créés ou modifiés par l’utilisateur actuel.

    private void GetItems()
    {
         SPFieldUserValue currentUser = new SPFieldUserValue
         (this.Web, this.Web.CurrentUser.ID, this.Web.CurrentUser.Name);
    
        ArrayList resultsList = new ArrayList();
    
        SPFarm thisFarm = SPFarm.Local;
        SPWebService service = thisFarm.Services.GetValue<SPWebService>("");
    
        foreach (SPWebApplication webApp in service.WebApplications)
        {
            foreach (SPSite siteCollection in webApp.Sites)
            {
                foreach (SPWeb web in siteCollection.AllWebs)
                {
                    SPListCollection lists = web.Lists;
                    foreach (SPList list in lists)
                    {
                        try
                        {
                            foreach (SPListItem item in list.Items)
                            {
                                if (item[DropDownList1.SelectedValue].ToString() ==
                                    currentUser.ToString())
                                {
                                    resultsList.Add(item);
                                }
                            }
                        }
                        catch (Exception)
                        {
                            // An error with the list. Move onto the next list.
                        }
                    }
                }
            }
        }
        CreateResultsTable(resultsList);
    
    }
    
  5. Ajoutez la méthode suivante à la classe SearchItems. Cette méthode affiche les éléments créés ou modifiés par l’utilisateur actuel dans la table.

    private void CreateResultsTable(ArrayList resultsList)
    {
        string currentList = "";
        string currentSite = "";
        Table1.Rows.Clear();
    
        foreach (SPListItem item in resultsList)
        {
            if (item.ParentList.ParentWeb.Title != currentSite)
            {
                currentSite = item.ParentList.ParentWeb.Title;
    
                TableCell newSiteCell = new TableCell();
                newSiteCell.Text = currentSite;
    
                TableRow newSiteRow = new TableRow();
                newSiteRow.Cells.Add(newSiteCell);
                newSiteRow.Font.Bold = true;
                newSiteRow.Font.Size = FontUnit.Larger;
                newSiteRow.Font.Underline = true;
    
                Table1.Rows.Add(newSiteRow);
            }
            if (item.ParentList.Title != currentList)
            {
                currentList = item.ParentList.Title;
                TableCell newListCell = new TableCell();
                newListCell.Text = currentList;
    
                TableRow newListRow = new TableRow();
                newListRow.Cells.Add(newListCell);
                newListRow.Font.Bold = true;
    
                Table1.Rows.Add(newListRow);
    
                TableCell itemHeading = new TableCell();
                itemHeading.Text = "Item";
                itemHeading.Font.Italic = true;
    
                TableCell createdHeading = new TableCell();
                createdHeading.Text = "Created";
                createdHeading.Font.Italic = true;
    
                TableCell modifiedHeading = new TableCell();
                modifiedHeading.Text = "Last Modified";
                modifiedHeading.Font.Italic = true;
    
                TableRow headingRow = new TableRow();
                headingRow.Cells.Add(itemHeading);
                headingRow.Cells.Add(createdHeading);
                headingRow.Cells.Add(modifiedHeading);
    
                Table1.Rows.Add(headingRow);
            }
    
            TableCell itemName = new TableCell();
            HyperLink itemLink = new HyperLink();
            try
            {
                itemLink.NavigateUrl = item.ParentList.ParentWeb.Url + "/" +
                    item.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url +
                    "?ID=" + item.ID;
            }
            catch (Exception)
            {
                // Some items might not have a form page. Ignore the exception.
            }
            itemLink.Text = item.DisplayName;
            itemName.Controls.Add(itemLink);
    
            TableCell created = new TableCell();
            created.Text = item["Created"].ToString();
    
            TableCell modified = new TableCell();
            modified.Text = item["Modified"].ToString();
    
            TableRow dataRow = new TableRow();
            dataRow.Cells.Add(itemName);
            dataRow.Cells.Add(created);
            dataRow.Cells.Add(modified);
    
            Table1.Rows.Add(dataRow);
        }
    }
    

Tester la page d’application

Lorsque vous exécutez le projet, le site SharePoint s’ouvre et la page de l’application s’affiche.

  1. Dans l’Explorateur de solutions, ouvrez le menu contextuel de la page d’application, puis choisissez Définir comme élément de démarrage.

  2. Choisissez la touche F5.

    Le site SharePoint s’ouvre.

  3. Dans la page d’application, choisissez l’option Modifié par moi.

    La page d’application s’actualise et affiche tous les éléments que vous avez modifiés dans tous les sites de la batterie de serveurs.

  4. Dans la page de l’application, choisissez Créé par moi dans la liste.

    La page d’application s’actualise et affiche tous les éléments que vous avez créés dans tous les sites de la batterie de serveurs.

Étapes suivantes

Pour plus d’informations sur les pages d’application SharePoint, consultez Créer des pages d’application pour SharePoint.

Vous pouvez en apprendre plus sur la conception du contenu de page SharePoint à l’aide de Visual Web Designer dans les rubriques suivantes :