Upload
solidq
View
174
Download
1
Embed Size (px)
DESCRIPTION
http://summit.solidq.com/ A lo largo de esta sesión, veremos como puede Windows PowerShell ayudar en tareas de desarrollo para SharePoint 2010. Empezaremos con un breve repaso a la programación en Windows PowerShell, para seguidamente poner todo en práctica, desarrollando scripts con los que resolver en segundos, problemas cotidianos que pueden llevar horas.
Citation preview
Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo Cristian M. Zaragoza Gómez
CyB200002
Desarrollador SharePoint – Colaboración y Búsqueda MCTS, SharePoint 2010, Configuración & Desarrollo
Objetivos de la sesión
Conocer el funcionamiento base y el alcance.
Aprender cómo personalizar el aspecto visual.
Aprender cómo extender la funcionalidad nativa.
Llamar a funciones .NET personalizadas desde el propio XSLT.
¿Qué es el Content By Query Web Part?
Demo 1: Toma de contacto
¿Qué lo hace especial?
Personalización del aspecto visual
Demo 2: Slider de imágenes
Agenda
CQWP para la gente de a pie
¿Eso es todo?
Cómo extender CQWP paso a paso
Demo 4: Paginación + filtrado dinámico
Insisto, ¿Eso es todo?
.NET desde XSLT
Demo 5: Invocando funciones .NET desde CQWP
Agenda
CQWP para superhéroes
CQWP para la gente de a pie
Herramienta orientada a diseñadores/desarrolladores, que…
permite reunir “trozos” de información con diferentes orígenes (listas, sitios…).
para después filtrar la información obtenida según se requiera…
y finalmente mostrar el conjunto de información filtrada en un único bloque.
CQWP para la gente de a pie
¿Qué es el Content By Query Web Part?
CQWP para la gente de a pie
¿Qué es el Content By Query Web Part?
3 5
4 1
9 7
3 5
7 9
Lista de SharePoint CQWP Query Resultado
DEMO Demo 1: Toma de contacto con CQWP
Herramienta Nativa (OOTB) SharePoint Server (2007 y 2010)
Separación de capas: datos y presentación.
Mejorado en 2010 con los “Slots”.
Sencillo personalizar aspecto visual. Requiere conocimientos en XSLT.
RENDIMIENTO
CQWP para la gente de a pie
¿Qué lo hace especial? (1)
Implementa un sistema de caché para optimizar las consultas.
Para ello se apoya en dos clases:
CrossListQueryCache
CrossListQueryInfo
A su vez éstas usan internamente SPSiteDataQuery.
CQWP para la gente de a pie
¿Qué lo hace especial? (2)
SPSiteDataQuery
Caché
CQWP
CrossListQueryCache
¿Qué lo hace especial? (3)
CQWP para la gente de a pie
CQWP para la gente de a pie
Personalización del aspecto visual (1)
Archivo Descripción
ContentQueryMain.xsl
Contiene la lógica que genera las llamadas adecuadas a
las plantillas de encabezado y elemento para cada
elemento.
ItemStyle.xsl
Contiene plantillas que definen cómo mostrar un
elemento. Estas plantillas reciben y procesan una fila de
datos cada vez, lo que permite garantizar que el estilo y
los datos de las filas de elementos sean coherentes.
Header.xsl
Contiene plantillas que definen cómo mostrar un
encabezado y garantizan la coherencia de los
encabezados de grupo.
CQWP para la gente de a pie
Personalización del aspecto visual (2)
XML
ContentQueryMain.xsl
Header.xsl
ItemStyle.xsl
HTML
En SharePoint 2010 aparece el concepto de slot.
Los slots permiten crear plantillas de presentación semánticas y reusables.
¿Cómo funcionan?
CQWP para la gente de a pie
Personalización del aspecto visual (3)
CQWP para la gente de a pie
Personalización del aspecto visual (4) <xsl:template name="DetailedOverview" match="Row[@Style='DetailedOverview']" mode="itemstyle">
<xsl:variable name="SafeLinkUrl">
<xsl:call-template name="OuterTemplate.GetSafeLink">
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="DisplayTitle">
<xsl:call-template name="OuterTemplate.GetTitle">
<xsl:with-param name="Title" select="''"/>
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
<xsl:with-param name="UseFileName" select="1"/>
</xsl:call-template>
</xsl:variable>
<p>
<strong><xsl:value-of select="$DisplayTitle"/></strong><br />
<xsl:value-of select="@Author"/>, <xsl:value-of select="@Date"/> </p>
<p>
<xsl:value-of select="@RollupImage"/>
<xsl:value-of select="@Details"/> </p>
<p>
<a href="{$SafeLinkUrl}">Read more</a>
</p>
</xsl:template>
DEMO Demo 2: Slider de imágenes
CQWP para superhéroes
En muchas ocasiones, podemos necesitar “algo más”: Mostrar contenidos según idioma.
Paginar elementos.
Parámetros propios.
Filtrados dinámicos.
Contenidos aleatorios.
Etc.
Tendencia natural Desarrollar un nuevo Web Part.
Nueva tendencia natural Extender CQWP.
CQWP para superhéroes
¿Eso es todo?
CQWP para superhéroes Cómo extender CQWP paso a paso (1)
' Incluir DLL y referencia.
Imports Microsoft.SharePoint.Publishing.WebControls
Public Class CQWPEx
Inherits ContentByQueryWebPart
Protected Overrides Sub CreateChildControls()
End Sub
End Class
CQWP para superhéroes Cómo extender CQWP paso a paso (2)
' Añadir parámetros al fichero XSLT.
Protected Overrides Sub ModifyXsltArgumentList(ByVal e As System.EventArgs) ...
argList.AddParameter(“Locale", "", “1033”)
MyBase.ModifyXsltArgumentList(argList)
End Sub
CQWP para superhéroes Cómo extender CQWP paso a paso (3)
' Sobrescribir esta función para filtrados dinámicos.
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
' Operador lógico (And, Or)
Me.Filter1ChainingOperator = FilterChainingOperator.And
' ID de la lista en la que vamos a filtrar
Dim filterField1ID As Guid = miLista.Id
Me.FilterField1 = filterField1ID.ToString
' Valor que ha de cumplir. Ej: Valor de la Query String
Me.FilterValue1 = “Categoria 1”
End Sub
CQWP para superhéroes Cómo extender CQWP paso a paso (4)
'A esta función llegamos después de haber filtrado.
'Podemos “refinar” los resultados Paginado
'También podemos establecer configuración extra Ficheros XSLT
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
' Establecemos ficheros XSLT propios
Me.ItemXslLink = "/.../ItemStyleEx.xsl"
Me.MainXslLink = "/.../ContentQueryMainEx.xsl"
...
End Sub
CQWP para superhéroes Cómo extender CQWP paso a paso (5)
' Recibe un DataTable con las filas ya procesadas (filtradas)
' Devuelve otro DataTable que será con que se cree el XML final.
' ¿Paginación?.
Protected Function processData(ByVal dt As DataTable) As DataTable
...
End Sub
DEMO Demo 4: Paginación + filtrado dinámico
CQWP para superhéroes
Insisto, ¿Eso es todo?
Con CQWP hay que tocar XSLT…
y no es el mejor amigo del desarrollador.
.NET si puede serlo…
Sería genial ejecutar .NET desde XSLT, ¿verdad?
CQWP aprueba esta “unión”
CQWP prácticamente para todo.
CQWP para superhéroes
.NET desde XSLT
DEMO Demo 5: Invocado funciones .NET desde CQWP
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http://summit.solidq.com/madrid/
Síguenos: