PDA

View Full Version : Grid. Paginación y carga de XML en local (Data Island)



galdaka
9 Oct 2006, 12:48 PM
Hola,

Ante todo dar las gracias a Jack por su magnifico trabajo. En segundo lugar agradecer tus ejemplos y códigos de tanta utilidad para cualquier desarrollador web.

Hace tiempo que ando buscando un componente grid que permita: paginar, filtrar, editar los datos en la propia grid y todo el cliente. Con su componente practicamente tengo todo esto pero quizás no entienda algunos aspectos. En el ejemplo de grid editable, no consigo cargar el xml en local:

dataModel.load("http://www..../plants.xml"); => SI FUNCIONA

dataModel.load("plants.xml"); => EN LOCAL NO FUNCIONA

dataModel.load(document.getElementById("xml1").xml); => NO FUNCIONA . Siendo "xml1" un objeto de tipo <xml></xml> con todo el contenido de plants.xml escrito en el propio HTML en modo data Island.

¿Se puede resolver esto? Por otra parte, ¿Se puede páginar en cliente un xml data island, es decir un xml "pintado" en el html?

Sugerencia: Sería interesante dotar al grid de un filtrado tipo Excel como el que le muestro a continuación en este link: http://www.codeproject.com/jscript/filter.asp. Todo en cliente, y con filtros actualizados al filtrar. No sé si sería posible en su Grid.

jack.slocum
9 Oct 2006, 2:15 PM
Asi se puede:

dataModel.loadData(document.getElementById("xml1").XMLDocument);

dataModel tiene function "filter()" pero no hay "user interface" que hacerlo. A lo mejor puede hacer lo en un toolbar encima de la grid?

Mi espanol es muy mal, pero espero que me entiende.

galdaka
9 Oct 2006, 11:09 PM
Hola Jack, gracias por responder, tu castellano se entiende perfectamente.

FUNCIONA PERFECTAMENTE TAL Y COMO DICES lo del XML en Local en Intenet explorer, en FireFox me dá el siguiente error:
Error: doc has no properties
Archivo de origen: file:///C:/****/Prueba%20Datagrid%20YUI/prueba%20GRID%201/yui-ext_32_3.js
Línea: 331

Y al editarlo va a la siguiente linea:


var rowData=[];var nodes=doc.getElementsByTagName(this.schema.tagName);if(nodes&&nodes.length>0){for(var i=0;i<nodes.length;i++){var node=nodes.item(i);var colData=[];colData.node=node;colData.id=this.getNamedValue(node,idField,String(i));for(var j=0;j<fields.length;j++){var val=this.getNamedValue(node,fields[j],"");if(this.preprocessors[j]){val=this.preprocessors[j](val);}

¿Sería posible paginarlo en Local? me gustaria mucho poder hacerlo.

Con respecto al filtrado, a lo que me refiero es a un filtrado multiple, es decir, por varias columnas a la vez. Estaría bien pensarlo para una próxima versión.

Un saludo Jack,

jack.slocum
10 Oct 2006, 12:36 AM
No creo que data island funciona in firefox. Solamente IE.

galdaka
10 Oct 2006, 11:57 AM
dataModel.loadData(document.getElementById("xml1").XMLDocument);

¿Puedo paginar el grid cargandolo en Local? ¿Como? Ponme un ejemplo

How can I paging the grid in Local? (Give me a example please)


dataModel.initPaging(document.getElementById("xml1").XMLDocument, 10); NO FUNCIONA

jack.slocum
10 Oct 2006, 1:58 PM
The way it's set up, paging must be done on the server.

galdaka
11 Oct 2006, 6:11 AM
Hola,

Sigo sin poder páginar. Tengo un script de servidor que pinta un xml de 100 elementos. Intento con initPaging(scriptservidor, 20) y me saca todos los elementos sin paginar. ¿Que funcionalidad concreta tiene que tener el script de servidor? ¿Como se pagina?

Gracias y un saludo,

jack.slocum
11 Oct 2006, 6:18 AM
Hay muchas maneras diferentes de hacer paging en el servidor. Que languaje usa en el servidor?

galdaka
11 Oct 2006, 7:24 AM
Gracias de nuevo,

Creo que acabo de entender la paginación mirando en la documentación. Al hacer "loadPage" le pasas unos parametros "mapeados" => paramsMap, y tienes que tratarlos con el script de servidor que elijas. Ya lo entiendo.

He probado la carga con 4.000 filas sin paginación y es lentisimo (Varios minutos).

1) ¿Sacarás alguna versión con carga de filas asincrona? es decir que se vayan viendo las filas que se van cargando y el resto que las cargue en "background".

2) ¿Cuales son las mejoras / funcionalidades que esperas añadir a la grid?

3) ¿Es posible realizar algún parseo antes de introducir la información en el grid? Ejemplo:

a) initPaging(url, 10) ... + loadPage(1) me devuelve un xml, pero antes de introducirlo en el grid quiero parsearlo con xsl para obtener otro xml que es el que finalmente se introducirá en el grid. ¿Hay algún evento del grid que me permita modificar el xml cargado antes de introducirlo en el grid?

xbartv
13 Oct 2006, 10:17 PM
Hola, entiendo por arriba lo que queres hacer pero por momentos confundes un poco. Me gustaria ver algo de codigo para ver si puedo ayudarte. Sobre todo algo de como haces lo de pintar los 4000 elementos en un xml.

Saludos, FER.

galdaka
15 Oct 2006, 10:18 AM
Hola,

El código que utilizo para leer 4000 filas de un xml y mostrarlas en el grid no tiene nada de especial, pero tarda varios minutos en hacerlo (En mostrarlo en el grid SIN PAGINACIÓN).

Insisto en mis preguntas Jack:


1) ¿Sacarás alguna versión con carga de filas asincrona? es decir que se vayan viendo las filas que se van cargando y el resto que las cargue en "background".

2) ¿Cuales son las mejoras / funcionalidades que esperas añadir a la grid?

3) ¿Es posible realizar algún parseo antes de introducir la información en el grid? Ejemplo:

a) initPaging(url, 10) ... + loadPage(1) me devuelve un xml, pero antes de introducirlo en el grid quiero parsearlo con xsl para obtener otro xml que es el que finalmente se introducirá en el grid. ¿Hay algún evento del grid que me permita modificar el xml cargado antes de introducirlo en el grid?