Compartir a través de


Tutorial: Crear una página de aplicación

Una página de aplicación es un formulario especializado de una página ASP.NET. Las páginas de aplicación incluyen contenido que está combinado con una página maestra de SharePoint. Para obtener más información, vea Crear páginas de aplicación para SharePoint.

En este tutorial se muestra cómo crear una página de aplicación y cómo depurarla utilizando un sitio de SharePoint local. Esta página de aplicación le permite al usuario ver todos los elementos que se han creado o modificado en todos los sitios de la granja de servidores.

En este tutorial se muestran las tareas siguientes:

  • Crear un proyecto de SharePoint.

  • Agregar una página de aplicación al proyecto de SharePoint.

  • Agregar controles ASP.NET a la página de aplicación.

  • Agregar código subyacente a los controles ASP.NET.

  • Probar la página de aplicación.

Nota

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que tenga y la configuración que esté utilizando determinan estos elementos. Para obtener más información, vea Trabajar con valores de configuración.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

Crear un proyecto de SharePoint

Primero, cree un Proyecto de SharePoint vacío. Después, agregará un elemento Página de aplicación a este proyecto.

Para crear un proyecto de SharePoint

  1. Inicie Visual Studio 2010.

  2. Abra el cuadro de diálogo Nuevo proyecto, expanda el nodo SharePoint bajo el lenguaje que desea usar y seleccione 2010.

  3. En el recuadro Plantillas instaladas de Visual Studio, seleccione Proyecto de SharePoint vacío. Asigne al proyecto el nombre MySharePointProject y haga clic en Aceptar.

    Aparece el Asistente para la personalización de SharePoint. Este asistente permite seleccionar el sitio que se va a usar para depurar el proyecto, así como el nivel de confianza de la solución.

  4. Seleccione Implementar como solución de granja de servidores y haga clic en Finalizar para aceptar el sitio local predeterminado de SharePoint.

Crear una página de aplicación

Para crear una página de aplicación, agregue un elemento Página de aplicación al proyecto.

Para crear una página de aplicación

  1. Seleccione el proyecto MySharePointProject en el Explorador de soluciones.

  2. En el menú Proyecto, haga clic en Agregar nuevo elemento.

  3. En el cuadro de diálogo Agregar nuevo elemento, seleccione la categoría Página de aplicación.

  4. Asigne a la página el nombre SearchItems y haga clic en Agregar.

    El diseñador de Visual Web Developer muestra la página de aplicación en la vista Código fuente, donde puede ver los elementos HTML de la página. El diseñador muestra el marcado de varios controles Content. Cada control se asigna a un control ContentPlaceHolder que se define en la página maestra de la aplicación predeterminada.

Diseñar el diseño de la página de aplicación

El elemento Página de aplicación le permite utilizar un diseñador para agregar controles ASP.NET a la página de aplicación. Este diseñador es el mismo que se utiliza en Visual Web Developer. Arrastre una etiqueta, una lista de botones de radio y una tabla a la vista Código fuente del diseñador y establezca las propiedades como lo haría en una página ASP.NET estándar.

Para obtener más información sobre el uso del diseñador en Visual Web Developer, vea Mapa de contenido de Visual Web Developer.

Para diseñar el diseño de la página de aplicación

  1. En el menú Ver, haga clic en Cuadro de herramientas.

  2. En el Cuadro de herramientas, en el grupo Estándar, arrastre un control Label, DropDownList y Table al cuerpo del control de contenido PlaceHolderMain.

  3. En el diseñador, cambie el valor del atributo Text del control de etiqueta por Mostrar todos los elementos.

  4. En el diseñador, reemplace el elemento <asp:DropDownList> por el XML siguiente.

    <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>
    

Controlar los eventos de los controles en la página

Controle los controles de una página de aplicación como lo haría en una página ASP.NET. En este procedimiento controlará el evento SelectedIndexChanged de la lista desplegable.

Para controlar los eventos de los controles en la página

  1. En el menú Ver, haga clic en Código.

    El archivo de código de la página de aplicación se abre en el editor de código.

  2. Agregue el método siguiente a la clase SearchItems. Este código controla el evento SelectedIndexChanged de DropDownList llamando a un método que creará posteriormente en este tutorial.

     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. Agregue las siguientes instrucciones a la parte superior del archivo de código de la página de aplicación.

    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. Agregue el método siguiente a la clase SearchItems. Este método recorre en iteración todos los sitios de la granja de servidores y busca los elementos creados o modificados por el usuario actual.

    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. Agregue el método siguiente a la clase SearchItems. Este método muestra elementos creados o modificados por el usuario actual en la tabla.

    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);
        }
    }
    

Probar la página de aplicación

Al ejecutar el proyecto, se abre el sitio de SharePoint y aparece la página de aplicación.

Para probar la página de aplicación

  1. En el Explorador de soluciones, haga clic con el botón secundario en la página de aplicación y después haga clic en Establecer como proyecto de inicio.

  2. Presione F5.

    Se abre el sitio de SharePoint. Aparece la página de aplicación.

  3. En la página, haga clic en la opción Modificado por mí.

    La página de aplicación se actualiza y muestra todos los elementos que ha modificado en todos los sitios de la granja de servidores.

  4. En la página, haga clic en la opción Creado por mí.

    La página de aplicación se actualiza y muestra todos los elementos que ha creado en todos los sitios de la granja de servidores.

Pasos siguientes

Para obtener más información sobre las páginas de aplicación de SharePoint, vea Crear páginas de aplicación para SharePoint.

En los temas siguientes puede obtener más información sobre cómo diseñar el contenido de páginas de SharePoint con Visual Web Designer:

Vea también

Tareas

Cómo: Crear una página de aplicación

Otros recursos

Application _layouts Page Type