Compartir a través de


Personalización de los controles y proveedores de navegación

Última modificación: domingo, 04 de abril de 2010

Hace referencia a: SharePoint Server 2010

Para personalizar la navegación, debe usar la navegación del sitio de ASP.NET, ya que ofrece una solución estándar, coherente y de fácil administración. Para obtener más información, vea el tema sobre el Centro para desarrolladores de Microsoft ASP.NET on MSDN.

Personalización de los controles de presentación web (Menu, TreeView y SiteMapPath)

Para personalizar la apariencia y el funcionamiento de los controles de presentación estándar, puede usar hojas de estilos en cascada (CSS). También puede escribir sus propios controles ASP.NET y usarlos en la navegación de . Para obtener más información, vea la documentación de la clase System.Web.UI.WebControls.Menu.

Nota

SharePoint Server 2010 también proporciona componentes de navegación predeterminados que puede personalizar, como el elemento web Consulta por contenido (CQWP)y el elemento web Tabla de contenido. Estos dos controles se pueden configurar para presentar una selección personalizada de vínculos.

Los controles de navegación System.Web.UI.WebControls.TreeView y System.Web.UI.WebControls.Menu se enlazan con orígenes de datos de ASP.NET, para proporcionar un nivel abstracto entre los controles de navegación web y el proveedor de navegación subyacente.

Implementación de proveedores de mapas del sitio

Para implementar su propio proveedor de mapa del sitio, puede derivar una clase de proveedor personalizada de cualquiera de los proveedores de mapa del sitio predeterminados. SharePoint Server 2010 incluye varios proveedores predeterminados. También puede derivar una clase de proveedor personalizada de la clase SiteMapProvider del espacio de nombres System.Web. Sin embargo, la derivación de los proveedores de mapa del sitio de SharePoint Server 2010 ofrece varias ventajas adicionales, como el almacenamiento en memoria caché de los nodos de navegación y el recorte de seguridad. Por tanto, debe usar la infraestructura de almacenamiento en memoria caché y de recorte de seguridad de SharePoint Server 2010 en lugar de escribir sus propios elementos de almacenamiento en memoria caché y recorte de seguridad en un proveedor personalizado derivado de los proveedores personalizados.

Aunque las clases del proveedor del mapa de sitio tienen alrededor de veinte métodos virtuales o abstractos, sólo es necesario reemplazar e implementar en un proveedor de mapa de sitio personalizado una pequeña cantidad de ellos.

El siguiente ejemplo de código se deriva de la clase PortalSiteMapProvider y muestra cómo agregar elementos al proveedor del mapa de sitio.

public class CustomNavProviderWithList : PortalSiteMapProvider
    {
        public override SiteMapNodeCollection GetChildNodes(System.Web.SiteMapNode node)
        {
            PortalSiteMapNode portalNode = node as PortalSiteMapNode;
            if (portalNode != null)
            {
                if (portalNode.Type == NodeTypes.Area)
                {
                 
                    SiteMapNodeCollection nodeColl = base.GetChildNodes(portalNode);
                    using (SPSite currentSite = new SPSite(portalNode.Url))
                     {
                       SPWeb currentWeb = currentSite.OpenWeb();
                       SPListCollection lists = currentWeb.Lists;
                       foreach (SPList list in lists)
                       {
                           string listUrl = list.DefaultViewUrl;
                           PortalSiteMapNode childNode = new PortalSiteMapNode(webNode, listUrl, NodeTypes.custom, list.Title, listUrl, null);
                           nodeColl.Add(childNode);
                    }
                  }
                  return nodeColl;
                }
                else
                {
                    return base.GetChildNodes(portalNode);
                }
            }
            else
            {
                return new SiteMapNodeCollection();
            }
        }
    }
Public Class CustomNavProviderWithList
    Inherits PortalSiteMapProvider
        Public Overrides Function GetChildNodes(ByVal node As System.Web.SiteMapNode) As SiteMapNodeCollection
            Dim portalNode As PortalSiteMapNode = TryCast(node, PortalSiteMapNode)
            If portalNode IsNot Nothing Then
                If portalNode.Type = NodeTypes.Area Then

                    Dim nodeColl As SiteMapNodeCollection = MyBase.GetChildNodes(portalNode)
                    Using currentSite As New SPSite(portalNode.Url)
                       Dim currentWeb As SPWeb = currentSite.OpenWeb()
                       Dim lists As SPListCollection = currentWeb.Lists
                       For Each list As SPList In lists
                           Dim listUrl As String = list.DefaultViewUrl
                           Dim childNode As New PortalSiteMapNode(webNode, listUrl, NodeTypes.custom, list.Title, listUrl, Nothing)
                           nodeColl.Add(childNode)
                       Next list
                    End Using
                  Return nodeColl
                Else
                    Return MyBase.GetChildNodes(portalNode)
                End If
            Else
                Return New SiteMapNodeCollection()
            End If
        End Function
End Class

Vea también

Referencia

Microsoft.SharePoint.Publishing.Navigation

Microsoft.SharePoint.Navigation

Conceptos

Procedimiento para personalizar la navegación

Trabajo con menús y objetos de navegación