Página inicial

Unidad 23. AJAX y Spry Framework (V)


Ordenar registros

 

Cuando creamos repeticiones es probable que queremos que nuestros registro aparezcan ordenados.

Para ello tendremos dos opciones, ordenarlos desde un principio o añadir un comportamiento para que cuando se produzca determinado evento los registros que se están mostrando en pantalla se ordenen automáticamente.

 

Crear comportamientos es muy sencillo, el evento más utilizado es el onClick al ser el que más interacción tiene con el usuario (como vimos en el tema de Comportamientos avanzados).

Ordenar un listado utilizando un comportamiento es muy sencillo.

Bastará con utilizar el método sort:

<div spry:region="miDataSet">

<table>

<tr>

<td onclick="miDataSet.sort('@id');">ID</td>

<td onclick="miDataSet.sort('propiedad');">PROPIEDAD</td>

</tr>

<tr spry:repeat="miDataSet">

<td>{@id}</td>

<td>{propiedad}</td>

</tr>

</table>

</div>

Como puedes ver en el ejemplo, este código creará una tabla con un encabezado con las palabras ID y PROPIEDAD.

El resto de filas serán repeticiones que mostrarán los diferentes registros del dataset.

Si hacemos clic en alguno de los encabezados, los registros se reordenarán para mostrarse ordenados por el campo que se encuentra en el encabezado pulsado. A la celda le hemos añadido un comportamiento onclick que ejecute sobre el dataset miDataSet el método sort ordenando por el campo entre paréntesis.

 

Es posible especificar en que dirección se realizará la ordenación, para ello deberás indicarlo añadiendo un nuevo parametro:

miDataSet.sort('propiedad', 'ascendig')

miDataSet.sort('propiedad', 'descending')

miDataSet.sort('propiedad', 'toggle')

 

Al asociar este método a un comportamiento podemos provocar que los registros se ordenen ascendentemente, descendentemente o utilizar la propiedad toggle para que cada vez que se provoque el comportamiento cambie la ordenación de ascendente a descendente y viceversa.

 

Como hemos dicho también es posible provocar la ordenación al cargar el dataset, de esta forma al visualizar los datos por primera vez aparecerán ordenados de la forma en que queramos y no hará falta esperar a que se realice un comportamiento para ordenarlos.

Ordenar un dataset en la carga requiere que se especifique en el momento en que lo definimos.

Veamos un ejemplo:

<script type="text/javascript">

var miDataSet = new Spry.Data.XMLDataSet("archivo.xml","listado/elemento",{sortOnLoad:"propiedad", sortOrderOnLoad:"descending"});

</script>

Aquí, en el momento de la declaración del dataset indicamos por qué campo se debe de ordenar y en qué sentido.

 

La ordenación en algunos momentos puede crearnos problemas si estamos visualizando campos que contienen números o fechas.

Para ello utilizaremos la declaración de los tipos de columnas:

<script type="text/javascript">

var miDataSet = new Spry.Data.XMLDataSet("archivo.xml", "listado/elemento", {sortOnLoad:"propiedad", sortOrderOnLoad:"descending"});

miDataSet.setColumnType("propiedad", "number");

</script>

De esta forma estamos indicando que la columna propiedad es de tipo numérico, también podríamos haber escrito date si fuese de tipo fecha.

Por defecto una columna es de tipo texto y por lo tanto se ordenará alfabéticamente.

 

Variables preestablecidas

 

Mientras uses Spry podrás acceder a unas variables que almacenan dinámicamente la información de los registros.

Estas variables pueden alamcenar el estado en el que se encuentra el dataset en cualquier momento, veamos cuáles son:

{ds_RowID}: devuelve el ID de un registro en el dataset. Puede utilizarse para referenciar un registro incluso si éstos son ordenados.

{ds_RowNumber}: devuelve el número de fila del registro dentro del dataset. Dentro de una condición indica el número de fila que se está evaluando.

{ds_RowCount}: devuelve el número total de registros en el dataset.

{ds_CurrentRowID}: devuelve el ID del registro actual. Este valor no cambiará incluso dentro de una condición.

{ds_CurrentRowNumber}: devuelve el número de fila del registro dentro del dataset. Este valor no cambiará incluso cuando se utilice dentro de una condición.

{ds_SortColumn}: devuelve el nombre de la última columna utilizada para la ordenación. Si los datos no han sido ordenados esta variable no devolverá nada.

{ds_SortOrder}: devuelve la dirección en que se ordenaron los registros por última vez (ascendente o descendente). No devolverá nada si los registros aun no han sido ordenados.

 

Estas variables nos serán muy útiles cuando creemos condiciones.

 




  Ir a la página anterior Índice del curso  Ir a la siguiente página  

Pág. 23.5

© aulaClic. Todos los derechos reservados. Free Computer tutorials. Prohibida la reproducción por cualquier medio.
Agosto - 2006.