SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
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
czaragoza@solidq.com
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 dea 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é esel Content By Query Web Part?
CQWP para la gente de a pie
¿Qué esel Content By Query Web Part?
35
4 1
97
35
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ómoextenderCQWPpasoapaso(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ómoextenderCQWPpasoapaso(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ómoextenderCQWPpasoapaso(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ómoextenderCQWPpasoapaso(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ómoextenderCQWPpasoapaso(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 estodo?
 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 desdeXSLT
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:

Más contenido relacionado

Similar a Personalización y extensión del webPart de consulta de contenidos (CQWP)

02 troubleshooting essentials sql server profiler - sql pass peru
02 troubleshooting essentials   sql server profiler - sql pass peru02 troubleshooting essentials   sql server profiler - sql pass peru
02 troubleshooting essentials sql server profiler - sql pass peruGuillermo Taylor
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6Julián Castiblanco
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Introduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comIntroduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comSimon Camacho
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro ComparativoMartha
 
10 razones para elegir WPF
10 razones para elegir WPF10 razones para elegir WPF
10 razones para elegir WPFbialguos
 
Ejemplo Linq To SQL
Ejemplo Linq To SQLEjemplo Linq To SQL
Ejemplo Linq To SQLjcfarit
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigMarcos Labad
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptxGabriela Soto
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8jcfarit
 
CvTrafficCounter Video
CvTrafficCounter VideoCvTrafficCounter Video
CvTrafficCounter VideoPaul Arévalo
 

Similar a Personalización y extensión del webPart de consulta de contenidos (CQWP) (20)

02 troubleshooting essentials sql server profiler - sql pass peru
02 troubleshooting essentials   sql server profiler - sql pass peru02 troubleshooting essentials   sql server profiler - sql pass peru
02 troubleshooting essentials sql server profiler - sql pass peru
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Introduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.comIntroduccion a-linq..www.freelibros.com
Introduccion a-linq..www.freelibros.com
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Block
BlockBlock
Block
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
10 razones para elegir WPF
10 razones para elegir WPF10 razones para elegir WPF
10 razones para elegir WPF
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Ejemplo Linq To SQL
Ejemplo Linq To SQLEjemplo Linq To SQL
Ejemplo Linq To SQL
 
Insight - Architecture Design
Insight - Architecture DesignInsight - Architecture Design
Insight - Architecture Design
 
Struts2
Struts2Struts2
Struts2
 
01 introducción
01 introducción01 introducción
01 introducción
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
 
Linq to sql 8
Linq to sql 8Linq to sql 8
Linq to sql 8
 
Seguridad en MLOps.pdf
Seguridad en MLOps.pdfSeguridad en MLOps.pdf
Seguridad en MLOps.pdf
 
CvTrafficCounter Video
CvTrafficCounter VideoCvTrafficCounter Video
CvTrafficCounter Video
 

Más de SolidQ

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?SolidQ
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en LinuxSolidQ
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida realSolidQ
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízateSolidQ
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksSolidQ
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BISolidQ
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesSolidQ
 
R en relacional
R en relacionalR en relacional
R en relacionalSolidQ
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!SolidQ
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en AzureSolidQ
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018SolidQ
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018SolidQ
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018SolidQ
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018SolidQ
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...SolidQ
 

Más de SolidQ (20)

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
 
R en relacional
R en relacionalR en relacional
R en relacional
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
 

Personalización y extensión del webPart de consulta de contenidos (CQWP)

  • 1. 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 czaragoza@solidq.com
  • 2. 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.
  • 3.  ¿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 dea pie
  • 4.  ¿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
  • 5. CQWP para la gente de a pie
  • 6.  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é esel Content By Query Web Part?
  • 7. CQWP para la gente de a pie ¿Qué esel Content By Query Web Part? 35 4 1 97 35 7 9 Lista de SharePoint CQWP Query Resultado
  • 8. DEMO Demo 1: Toma de contacto con CQWP
  • 9.  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)
  • 10.  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
  • 11.  ¿Qué lo hace especial? (3) CQWP para la gente de a pie
  • 12.
  • 13.
  • 14. 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.
  • 15. CQWP para la gente de a pie Personalización del aspecto visual (2) XML ContentQueryMain.xsl Header.xsl ItemStyle.xsl HTML
  • 16.  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)
  • 17. 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>
  • 18. DEMO Demo 2: Slider de imágenes
  • 20.  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?
  • 21. CQWP para superhéroes CómoextenderCQWPpasoapaso(1) ' Incluir DLL y referencia. Imports Microsoft.SharePoint.Publishing.WebControls Public Class CQWPEx Inherits ContentByQueryWebPart Protected Overrides Sub CreateChildControls() End Sub End Class
  • 22. CQWP para superhéroes CómoextenderCQWPpasoapaso(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
  • 23. CQWP para superhéroes CómoextenderCQWPpasoapaso(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
  • 24. CQWP para superhéroes CómoextenderCQWPpasoapaso(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
  • 25. CQWP para superhéroes CómoextenderCQWPpasoapaso(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
  • 26. DEMO Demo 4: Paginación + filtrado dinámico
  • 28.  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 desdeXSLT
  • 29. DEMO Demo 5: Invocado funciones .NET desde CQWP
  • 30. 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: