Aprende ExtJS: Definiendo las propiedades de una grilla en tiempo de ejecución

febrero 27, 2008 17:30 by Jorge

Recientemente he estado evaluando la impresionante biblioteca ExtJS. Analizando cómo nuestros productos pudieran beneficiarce con el uso de ExtJS, uno de los retos más importantes que he encontrado es el hecho que nuestras "grids", o "grillas" - perdonen los errores de traducción :) - son dinámicas. Y digo dinámicas en el sentido de que las propriedades de las columnas - número de columnas, tipos de datos, formatos, etc... - solamente son conocidas en tiempo de ejecución.

Aquí les demuestro una de las posibles soluciones que permiten enviar los modelos de columnas, así como las definiciones de sus bancos de datos, desde el servidor hacia el cliente. De esta manera, las columnas para las grillas pueden ser controladas por el código que se ejecuta en el servidor.

Por cada página que contiene grillas, la solución consiste en dos pasos. El primero es una llamada AJAX para adquirir las definiciones de las columnas para las grillas. El segundo es la llamada para obtener la información que las grillas mostrarán.

 

 

A pesar de que en mi ejemplo el código en el servidor está escrito en C#, el concepto es válido para cualquier lenguaje.

En lo que respecta a las rutinas que se ejecutan dentro de la página web, lo más importante es ordenar las llamadas AJAX de manera que la información a mostrar se obtenga solamente después que las columnas de la grilla fueron correctamente creadas.

La primera llamada que llega al servidor es manejada por la rutina GetGridSettings:

 

   1:  private string GetGridSettings()
   2:      {
   3:   
   4:          StringBuilder sb = new StringBuilder();
   5:   
   6:          // Grid name
   7:          sb.Append("[['myGrid'],[");
   8:          // Grid columns
   9:          sb.Append("{id:'firstname',header: 'First Name', width: 200, sortable: true, dataIndex: 'first_name'},");
  10:          sb.Append("{id: 'lastname', header: 'Last Name', width: 200, sortable: true, dataIndex: 'last_name'},");
  11:          sb.Append("{header: 'Email Address', width: 200, sortable: true, dataIndex: 'email_address'}");
  12:          sb.Append("],");
  13:          // Data Store fields
  14:          sb.Append("[{name: 'first_name'},{name: 'last_name'},{name:'email_address'}]");        
  15:          sb.Append("]");
  16:   
  17:          return sb.ToString();
  18:      }


GetGridSettings es donde se construyen el modelo para las columnas y los campos del banco de datos.

La segunda llamada es manejada por la rutina GetGridData, que simplemente adquiere la información que la grilla va a mostrar:

 

   1:      private string GetGridData()
   2:      {
   3:          StringBuilder sb = new StringBuilder();
   4:          int rowCount = 50;
   5:          
   6:          sb.Append("{rCnt:" + rowCount.ToString() + ",rows:[");
   7:   
   8:          for (int i = 0; i < rowCount; i++)
   9:          {
  10:              sb.Append("{'first_name':'John','last_name':'Doe" + i.ToString() + "','email_address':'JohnDoe" + i.ToString() + "@gmail.com'},");
  11:          }
  12:   
  13:          sb.Append("]}");
  14:   
  15:          return sb.Replace(",]}","]}").ToString();   // Remove the extra comma before sending the data.
  16:      }

 

Bájate el ejemplo como un projecto de Visual Studio: DynamicGrid.rar (528.43 kb)

Noticia: Leyendo en el fórum de ExtJS encontré que existe una extensión para el GridPanel que puede ayudar con el reto del que hablo en este artículo.

 

Acciones: E-mail | Permalink | Comentarios (0) | Trackback

Lanzador para simuladores de BlackBerry

febrero 17, 2008 11:30 by Jorge

Esta herramienta surgió porque al desarrollar applicaciones para el BlackBerry, siempre me ha resultado tedioso tener lanzar cada uno de los simuladores cuando estoy probando mi código. La herramienta me permite lanzar los diferentes simuladores que tengo instalados en mi PC y especificar las diferentes opciones de lanzamiento - limpiar la imagen flash, la RAM no volátil y otras. No es muy sofisticada, pero me ahorra tiempo.

Ah, está escrita en C#. Si te gustaría una escrita con Java, déjamelo saber y me pondré a trabajar en ella.

Muy importante: después de instalar la herramienta, modifica el archivo de configuración - simulators.xml. En él debes especificar la información acerca de cada simulador que tienes instalado. Si quieres agregar o remover simuladores o modelos de BlackBerry, debes modificar este archivo.

Bájate la aplicación aquí: BlackBerrySimulatorLauncher.zip (976 kb)

Bueno, espero que te sea útil. Escríbeme si se te ocurre alguna idea para mejorarla.

Acciones: E-mail | Permalink | Comentarios (0) | Trackback