Tutorial: Creación de una página de aplicación de SharePoint

Una página de aplicación es un formulario especializado de una página ASP.NET. Las páginas de aplicación contienen contenido que se combina con una página maestra de SharePoint. Para más información, consulte Creación de páginas de aplicación para SharePoint.

En este tutorial se muestra cómo crear una página de aplicación y, a continuación, depurarla mediante un sitio de SharePoint local. En esta página se muestran todos los elementos que cada usuario ha creado o modificado en todos los sitios de la granja de servidores.

En este tutorial se muestran las tareas siguientes:

  • Creación de un proyecto de SharePoint.
  • Incorporación de una página de aplicación al proyecto de SharePoint.
  • Incorporación de controles ASP.NET a la página de la aplicación.
  • Incorporación de código detrás de los controles ASP.NET.
  • Prueba de la página de aplicación.

Nota:

Es posible que tu 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 se tenga y la configuración que se utilice determinan estos elementos. Para más información, vea Personalizar el IDE de Visual Studio.

Requisitos previos

  • Ediciones compatibles de Windows y SharePoint.

Creación de un proyecto de SharePoint

En primer lugar, cree un proyecto vacío de SharePoint. Más adelante, agregará un elemento Página de aplicación a este proyecto.

  1. Inicie Visual Studio.

  2. Abra el cuadro de diálogo Nuevo proyecto, expanda el nodo Office/SharePoint en el lenguaje que desee usar y, después, elija el nodo Soluciones de SharePoint.

  3. En el panel Plantillas instaladas de Visual Studio, elija la plantilla SharePoint 2010 - Proyecto vacío. Asigne el nombre MySharePointProject al proyecto y, después, haga clic en el botón 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. Elija el botón de opción Implementar como solución de granja de servidores y después elija el botón 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.

  1. En el Explorador de soluciones, elija el proyecto MySharePointProject.

  2. En la barra de menús, elija Proyecto>Agregar nuevo elemento.

  3. En el cuadro de diálogo Agregar nuevo elemento, elija la plantilla Página de aplicación (Solución de granja de servidores únicamente).

  4. Ponga el nombre SearchItems a la página y luego elija el botón Agregar.

    El diseñador Visual Web Developer muestra la página de aplicación en la vista Origen, en la que 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ño de la página de aplicación

El elemento Página de aplicación le permite usar un diseñador para agregar controles ASP.NET a la página de aplicación. Este diseñador es el mismo que se usa en Visual Web Developer. Agregue una etiqueta, una lista de botones de radio y una tabla a la vista Origen del diseñador y, a continuación, establezca las propiedades igual que lo haría al diseñar cualquier página ASP.NET estándar.

  1. En la barra de menús, elija Ver>Cuadro de herramientas.

  2. En el nodo Estándar del Cuadro de herramientas, realice uno de los pasos siguientes:

    • Abra el menú contextual del elemento Etiqueta, elija Copiar, abra el menú contextual de la línea en el control de contenido PlaceHolderMain del diseñador y, a continuación, elija Pegar.

    • Arrastre el elemento Etiqueta desde el cuadro de herramientas al cuerpo del control de contenido PlaceHolderMain.

  3. Repita el paso anterior para agregar un elemento DropDownList y un elemento Table al control de contenido PlaceHolderMain.

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

  5. En el diseñador, reemplace el elemento <asp:DropDownList> por el siguiente código XML.

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

Administración de los eventos de controles en la página

Administre los controles de una página de aplicación igual que lo haría con cualquier página ASP.NET. En este procedimiento, va a administrar el evento SelectedIndexChanged de la lista desplegable.

  1. En el menú Ver, elija 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 siguiente método a la clase SearchItems. Este código administra el evento SelectedIndexChanged de DropDownList llamando a un método que creará más adelante en este tutorial.

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SPSecurity.RunWithElevatedPrivileges(GetItems);
       
    }
    
  3. Agregue las siguientes instrucciones en la parte superior del archivo de código de la página de aplicación.

    using System.Web.UI.WebControls;
    using Microsoft.SharePoint.Administration;
    using System.Collections;
    
  4. Agregue el siguiente método a la clase SearchItems. Este método itera todos los sitios de la granja de servidores y busca elementos creados o modificados por el usuario actual.

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

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

Prueba de la página de aplicación

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

  1. En el Explorador de soluciones, abra el menú contextual de la página de aplicación y, después, elija Establecer como elemento de inicio.

  2. Elija la tecla F5.

    Se abre el sitio de SharePoint.

  3. En la página de aplicación, elija 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 de la aplicación, elija Creado por mí en la lista.

    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 más información sobre las páginas de aplicación de SharePoint, consulte Crear páginas de aplicación para SharePoint.

Puede obtener más información sobre cómo diseñar contenido de página de SharePoint mediante el Diseñador web visual de estos temas: