Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/11/2010, 04:06
Avatar de stock
stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 11 meses
Puntos: 53
Respuesta: tabla dinamica con javascript

Mira, yo he creado un componente que me crea una tabla dinámicamente, para usarla simplemente hago lo siguiente:

Código Javascript:
Ver original
  1. var grid = new App.Grid({
  2.    id : "ejemplo",
  3.    columns : [
  4.       {header:"Nombre",dataIndex:"name",sortable:true},
  5.       {header:"Apellido",dataIndex:"lastname",sortable:true},
  6.       {header:"Edad",dataIndex:"age",sortable:true},
  7.       {header:"Email",dataIndex:"email",sortable:true}
  8.    ],
  9.    stripeRows : true
  10. });
  11.  
  12. grid.render("idDeUnElemento");
  13.  
  14. grid.load({
  15.    url  : "serverside/cargarInformacion.php"
  16. });

El JSON que regresa el servidor con la información a desplegar en el body sería algo así:

Código Javascript:
Ver original
  1. [
  2. {name:"Crysfel",lastname:"Villa",age:"26",email:"[email protected]"},
  3. {name:"John",lastname:"Doe",age:"26",email:"[email protected]"},
  4. {name:"Sasha",lastname:"Cohen",age:"26",email:"[email protected]"}
  5. ]

Si a algo así te refieres vas por buen camino! la idea es reutilizar componentes, hacerlos una sola vez y permitir crear nuevos con diferentes configuraciones.

Ahora, la parte interesante viene al hacer el componente, primero debes tener buenos conocimientos de POO, conceptos fundamentales de JavaScript, como es el scope, closures, eventos, etc..., el código que tengo del componente que te comento es semejante al siguiente:


Código Javascript:
Ver original
  1. var App = {};
  2.  
  3. App.Grid = function(config){
  4.  
  5.     //aplicar las configuraciones al objeto
  6.  
  7.     //crear la tabla
  8.     this.createHeader();
  9.     this.createBody();
  10.  
  11.     //si el usuario lo configura se renderiza la tabla desde el inicio
  12.     if(this.renderTo){
  13.         //ejecutar método render...
  14.     }
  15.  
  16.     //se realiza la petición ajax si se configura el autoLoad = true
  17.     if(this.autoLoad){
  18.        this.load(config.url);
  19.     }
  20. }
  21.  
  22. App.Grid.prototype = {
  23.     renderTo : false,
  24.     autoLoad: false,
  25.  
  26.     render  : function(where){
  27.  
  28.     },
  29.  
  30.     createHeader : function(){
  31.  
  32.     },
  33.  
  34.     load  : function(url){
  35.        
  36.     }
  37. }

Mas o menos así es como lo tengo, te he dado una idea.

Saludos