Ordenar Datawindows en ejecución

Quisiera que usted me dijera como ordenar los registros en orden descendente de una datawindows en tiempo de ejecución, con solo dar dobleclik sobre la columna por la que quiero ordenar. Ejemplo supongamos que la tabla tiene una columna llamada código que son números, yo quiero que con una clic sobre esta columna se me ordene descendentemente todos los registros .y así con las demás, las que son de carácter se ordenen alfabéticamente en fin todas las columnas.

4 Respuestas

Respuesta
1
/*
Ok. En el evento doubleclicked del dw escribe el siguiente script, te sugiero veas la ayuda para la función setsort()
PB. V9
*/
if dwo.name = 'codigo' then
dw_1.SetRedraw(false)
dw_1.SetSort("#2 D") // donde #2 es la columna 'codigo'
dw_1.Sort()
dw_1.SetRedraw(true)
end if
if dwo.name = 'otracolumna' then
dw_1.SetRedraw(false)
dw_1.SetSort("#3 D, #2 A") // donde #3 es la columna 'otracolumna'
dw_1.Sort()
dw_1.SetRedraw(true)
end if
Espero que esto te sirva y si no hay más dudas al respecto te pido de favor cerrar la pregunta
Respuesta
1
En el evento clicked podes codificar el ordenamiento.
Por ej.
this.setsort(this.GetColumnName() + " DESC")
this.sort()
Si quedan dudas escribí sino cerra la pregunta
Respuesta
1
El proceso de ordenamiento de la forma en que me lo solicitas tiene un poco de complejidad, pues es fácil verlo desde el punto de vista en que solo haciendo click sobre la columna debería de ordenar en un sentido o en otro. Sin embargo power builder utiliza una serie de recursos que determinan e informan la situación de ese simple click.
Por ejemplo
Cuando haces click sobre el datawindow, disparas un evento que lleva ese nombre,
el cual contiene varios argumentos, ROW que es la fila, DWO, que es el datawindowobject, y alguno más que dejo en el tintero apropósito pues en nuestro caso estos son los más importantes,
cuando haces click sobre el titulo de la columna el valor del argumento ROW es 0, esto significa que estas tocando el área de cabecera o más bien la banda de cabecera del datawindow, luego tienes el valor del objeto dado en el argumento dwo, el cual en este caso se trata de un simple objeto del tipo etiqueta, este objeto tiene varias propiedades, una de ellas es NAME, (DWO. NAME), esta propiedad da como resultado el nombre del objeto, para que el efecto que buscas funcione power builder utiliza el mismo nombre de la columna en el nombre de la etiqueta, con la diferencia que añade al final _t (guion bajo y te) lo que indica que estas haciendo click sobre un titulo, (porque), muy simple, la idea es que cuando el objeto dwo devuelva el nombre inmediatamente reconozcas de cual columna se trata, sin embargo, tendrás que extraer de ese valor la cola _t
por ejemplo
si tu columna se llama CÓDIGO
la cabecera de esta se deberá llamar CODIGO_T,
ahora tienes que eliminar esa cola, esto te servirá para componer un script
que proporciona al datawindow la forma en que deberá ser ordenado,
para ello utilizas dos funciones
SETSORT()
SORT()
La primera sirve para indicar la forma en que deberá ser ordenado el datawindow, por ejemplo,
SETSORT('codigo') esto indica cual es la forma de orden, y para ejecutar este utilizas la otra función SORT() lo que provoca que el datawindow se reordene,
Sino te ha quedado claro, (que espero haberlo explicado bien), puedes acudir a la demo, que incluy la instalación de power builder, en el directorio correspondiente según la version que tienes, en donde encontraras modelos y ejemplos de lo que en lineas anteriores te he explicado,
estos ejemplos o modelos los puede reutilizar, e incluir en tus aplicaciones,
Respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas