Partager via


Procédure pas à pas : création d'une page d'application

Une page d'application désigne une forme spécifique de page ASP.NET.Les pages d'application contiennent du contenu fusionné avec une page maître SharePoint.Pour plus d'informations, consultez Création de pages d'application pour SharePoint.

Cette procédure pas - à - pas vous indique comment créer une page d'application et la déboguer à l'aide d'un site SharePoint local.Cette page affiche tous les éléments que chaque utilisateur a créé ou modifié dans l'ensemble des 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-behind aux contrôles ASP.NET

  • Test de la page d'application

[!REMARQUE]

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.Ces éléments dépendent de l'édition de Visual Studio dont vous disposez et des paramètres que vous utilisez.Pour plus d'informations, consultez Paramètres Visual Studio.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

Création d'un projet SharePoint

Commencez par créer un Projet SharePoint vide.Vous ajouterez ensuite un élément Page Application à ce projet.

Pour créer un projet SharePoint

  1. Démarrez Visual Studio.

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

  3. Dans le volet de Modèles Visual Studio installés, 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 à utiliser pour déboguer le projet et le niveau de confiance de la solution.

  4. Sélectionnez la case d'option Déployer en tant que solution de batterie, puis choisissez le bouton Terminer pour accepter le site SharePoint local par défaut.

Création d'une page d'application

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

Pour créer une page d'application

  1. Dans Explorateur de solutions, sélectionnez le projet de MySharePointProject .

  2. Dans la barre de menus, sélectionnez Projet, Ajouter un nouvel élément.

  3. Dans la boîte de dialogue Ajouter un nouvel élément, choisissez le modèle Page d'application (solution de batterie uniquement .

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

    Le concepteur Visual Web Developer affiche la page d'application dans la vue Source vous pouvez ainsi consulter 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 qui est défini dans la page d'application maître par défaut.

Conception de la disposition de la page d'application

L'élément Page Application vous permet d'utiliser un concepteur pour ajouter des contrôles ASP.NET à la page d'application.Ce concepteur est le même que celui utilisé dans Visual Web Developer.Ajoutez une étiquette, une liste de case d'option, et une table à la vue Source du concepteur, les propriétés et ensuite définies comme lorsque vous concevez une page ASP.NET. standard.

Pour plus d'informations sur l'utilisation du concepteur dans Visual Web Developer, consultez Visual Studio 11 bêta du mappage de contenu Web.

Pour concevoir la disposition de la page d'application

  1. Dans la barre de menus, sélectionnez Afficher, Boîte à outils.

  2. Dans le nœud standard Boîte à outils, effectuez l'une des étapes suivantes :

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

    • Faites glisser l'élément ÉtiquetteBoîte à outils sur 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 Table au contrôle de contenu PlaceHolderMain .

  4. Dans le concepteur, affectez la valeur Afficher tous les éléments à l'attribut Text du contrôle d'étiquette.

  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>
    

Gestion des événements de contrôles dans la page

Vous pouvez gérer les contrôles dans une page d'application de la même manière que vous le feriez dans une page ASP.NET.Dans cette procédure, vous allez générer l'événement SelectedIndexChanged dans la liste déroulante.

Pour gérer les événements de contrôles dans la page

  1. Dans le menu Afficher, choisissez Code.

    Le fichier de code 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 du DropDownList en appelant une méthode que vous créerez plus loin dans cette procédure.

     Protected Sub DropDownList1_SelectedIndexChanged _
    (ByVal sender As Object, ByVal e As EventArgs) _
    Handles DropDownList1.SelectedIndexChanged
         SPSecurity.RunWithElevatedPrivileges(AddressOf GetItems)
     End Sub
    
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SPSecurity.RunWithElevatedPrivileges(GetItems);
    
    }
    
  3. Ajoutez les instructions suivantes au début du fichier de code de la page d'application.

    Imports System.Web.UI.WebControls
    Imports Microsoft.SharePoint.Administration
    Imports System.Collections
    
    using System.Web.UI.WebControls;
    using Microsoft.SharePoint.Administration;
    using System.Collections;
    
  4. Ajoutez la méthode suivante à la classe SearchItems.Cette méthode itère au sein de l'ensemble des sites de la batterie de serveurs et recherche les éléments créés ou modifiés par l'utilisateur actuel.

    Private Sub GetItems()
        Dim CurrentUser As New SPFieldUserValue _
            (Me.Web, Me.Web.CurrentUser.ID, Me.Web.CurrentUser.Name)
    
        Dim ResultsList As New ArrayList()
    
        Dim ThisFarm As SPFarm = SPFarm.Local
        Dim Service As SPWebService = _
            ThisFarm.Services.GetValue(Of SPWebService)("")
    
        Dim WebApp As SPWebApplication
        For Each WebApp In Service.WebApplications
            Dim SiteCollection As SPSite
            For Each SiteCollection In WebApp.Sites
                Dim Web As SPWeb
                For Each Web In SiteCollection.AllWebs
                    Dim Lists As SPListCollection = Web.Lists
                    Dim List As SPList
                    For Each List In Lists
                        Dim Item As SPListItem
                        Try
                            For Each Item In List.Items
                                If Item(DropDownList1.SelectedValue).ToString() = _
                                    CurrentUser.ToString() Then
                                    ResultsList.Add(Item)
                                End If
                            Next Item
                        Catch exception As Exception
                            'Error in list. Move on to the next list.
                        End Try
                    Next List
                Next Web
            Next SiteCollection
        Next WebApp
        CreateResultsTable(ResultsList)
    End Sub
    
    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 Sub CreateResultsTable(ByVal ResultsList As ArrayList)
        Dim CurrentList As String = ""
        Dim CurrentSite As String = ""
        Table1.Rows.Clear()
    
        Dim Item As SPListItem
        For Each Item In ResultsList
            If Item.ParentList.ParentWeb.Title <> CurrentSite Then
                CurrentSite = Item.ParentList.ParentWeb.Title
    
                Dim NewSiteCell As New TableCell()
                NewSiteCell.Text = CurrentSite
    
                Dim NewSiteRow As New TableRow()
                With NewSiteRow
                    .Cells.Add(NewSiteCell)
                    .Font.Bold = True
                    .Font.Size = FontUnit.Larger
                    .Font.Underline = True
                End With
                Table1.Rows.Add(NewSiteRow)
    
            End If
    
            If Item.ParentList.Title <> CurrentList Then
                CurrentList = Item.ParentList.Title
                Dim NewListCell As New TableCell()
                NewListCell.Text = CurrentList
    
                Dim NewListRow As New TableRow()
                With NewListRow
                    .Cells.Add(NewListCell)
                    .Font.Bold = True
                End With
                Table1.Rows.Add(NewListRow)
    
                Dim ItemHeading As New TableCell()
                With ItemHeading
                    .Text = "Item"
                    .Font.Italic = True
                End With
    
                Dim CreatedHeading As New TableCell()
                With CreatedHeading
                    .Text = "Created"
                    .Font.Italic = True
                End With
    
    
                Dim ModifiedHeading As New TableCell()
                With ModifiedHeading
                    .Text = "Last Modified"
                    .Font.Italic = True
                End With
    
                Dim HeadingRow As New TableRow()
                HeadingRow.Cells.Add(ItemHeading)
                HeadingRow.Cells.Add(CreatedHeading)
                HeadingRow.Cells.Add(ModifiedHeading)
    
                Table1.Rows.Add(HeadingRow)
            End If
    
            Dim ItemName As New TableCell()
            Dim ItemLink As New HyperLink()
            Try
                ItemLink.href = Item.ParentList.ParentWeb.Url & _
                    "/" & Item.ParentList.Forms(PAGETYPE.PAGE_DISPLAYFORM).Url & _
                    "?ID=" & Item.ID
            Catch exception As Exception
                ' Some items might not have a form page. Ignore the exception.
            End Try
            ItemLink.Text = Item.DisplayName
            ItemName.Controls.Add(ItemLink)
    
            Dim Created As New TableCell()
            Created.Text = Item("Created").ToString()
    
            Dim Modified As New TableCell()
            Modified.Text = Item("Modified").ToString()
    
            Dim DataRow As New TableRow()
            DataRow.Cells.Add(ItemName)
            DataRow.Cells.Add(Created)
            DataRow.Cells.Add(Modified)
    
            Table1.Rows.Add(DataRow)
        Next Item
    End Sub
    
    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.href = 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);
        }
    }
    

Test de la page d'application

Lorsque vous exécutez le projet, le site SharePoint s'ouvre et la page d'application s'affiche.

Pour tester la page d'application

  1. Dans Explorateur de solutions, ouvrez le menu contextuel pour la page d'application, puis choisissez Définissez en tant qu'élément de démarrage.

  2. Choisissez la touche F5.

    Le site SharePoint s'ouvre.

  3. Sur la page d'application, choisissez l'option Modifiés par moi .

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

  4. Sur la page d'application, choisissez Que j'ai créés dans la liste.

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

Étapes suivantes

Pour plus d'informations au sujet des pages d'application SharePoint, consultez Création de pages d'application pour SharePoint.

Pour savoir comment concevoir le contenu d'une page SharePoint à l'aide de Visual Web Designer, consultez les rubriques suivantes :

Voir aussi

Tâches

Comment : créer une page d'application

Autres ressources

Les _layouts d'application le type page