Mostrando entradas con la etiqueta Filtrado CASEINSENSITIVE. Mostrar todas las entradas
Mostrando entradas con la etiqueta Filtrado CASEINSENSITIVE. Mostrar todas las entradas

martes, 14 de abril de 2009

Filtrado CASEINSENSITIVE por propietario para ListItems cargados masivamente

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/