Objetivo:
Filtrar resultados por propietario de forma case insensitive, con sharepoint designer
Ingredientes:
Un parámetro que recoger la server variable del LOGON_USER
Dos variables auxiliares para hacer el uppercase en XSLT
Un translate XSLT para el UPPERCASE
Receta:
El parametro del webpart para obtener el usuario actual
<ParameterBinding Name="UID" Location="ServerVariable(LOGON_USER)" DefaultValue=""/>
No es fácil ni cómodo cambiar el creador de un ListItem ya que es de solo lectura, y si queremos hacer cargas masivas, el creator siempre es SYSTEM, para cambiarlo hay que hacerlo directamente contra la base de datos de contenidos, y no es recomendable.
Esto me hizo optar por usar un campo extra "propietario" (hay que crearlo) para así filtrar elementos por él e inyectarle mediante un integrador los ListItems de forma masiva.
Ahora con la lista cargada, solo tengo que filtrar.
aqui hacemoes el filtrado de Datasource por propietario CASE-INSENSITIVE
<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
Aquí hacemos la select XPATH filtrando por propietario
<xsl:variable name="Rows" select="/dsQueryResponse/Propuestas/Rows/Row[@Estado = 'SIN CUMPLIMENTAR' and translate(@Propietario,$lcletters,$ucletters) = translate($UID,$lcletters,$ucletters)]" />
Espero os resulte de utilidad, yo lo uso mucho en mis aplicaciones.http://www.robertomarcos.com/
No hay comentarios:
Publicar un comentario